iOS:这是在应用程序支持中创建目录以存储我的 SQL 文件的正确方法吗?

iOS: Is this the proper way to create a directory in Application Support to store my SQL file?

我有一个 sqlite 文件,我正试图将其存储在应用程序支持文件夹中。我正在使用以下代码来创建目录。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
NSString *applicationSupportDirectory = [paths firstObject];
NSError *err;
NSString *dataPath = [applicationSupportDirectory stringByAppendingPathComponent:@"/Email"];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
            [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&err]; //Create folder

NSString  *dataBasePath = [applicationSupportDirectory stringByAppendingString:@"/Email/Email.sqlite"];

这是我NSLog dataBasePath

时的打印结果

/var/mobile/Containers/Data/Application/8A40E5A9-EEE6-46EF-B71F-36C9A00D5996/Library/Application Support/Email/Email.sqlite

在 Application Support 中创建用于存储我的 sql 文件的目录的正确方法是否正确?我必须使用应用程序支持,这样用户就不会弄乱它(我使用文件共享,所以文档目录是不可能的)并且 OS 也不应该弄乱它。我只需要确定

接近但不太正确。不要将 / 放在 Email 之前。您想要将 YES 传递给 withIntermediateDirectories。最终路径应该使用 dataPathstringByAppendingPathComponent.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
NSString *applicationSupportDirectory = [paths firstObject];
NSString *dataPath = [applicationSupportDirectory stringByAppendingPathComponent:@"Email"];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]) {
    NSError *err;
    if (![[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:YES attributes:nil error:&err]) { //Create folder
        NSLog(@"Unable to create folder at %@: %@", dataPath, err);
    }
}

NSString  *dataBasePath = [dataPath stringByAppendingPathComponent:@"Email.sqlite"];