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
。最终路径应该使用 dataPath
和 stringByAppendingPathComponent
.
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"];
我有一个 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
。最终路径应该使用 dataPath
和 stringByAppendingPathComponent
.
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"];