以下是我用于在iOS上创建和访问重要配置文件的NSURL
对象,其中包含以下功能:
必须由iCloud / iTunes备份
[NSURL fileURLWithPath:[[NSSearchPathForDirectoriesInDomains(
NSLibraryDirectory,
NSUserDomainMask,
YES) objectAtIndex:0]
stringByAppendingString:@"/important.txt"]];
根据FileSystemOverview (developer.apple.com)的建议,我将此文件存储在Library
下。
也许更好的方法是将其存储在Library/Application Support
下。
使用NSSearchPathForDirectoriesInDomains
,其中包含:
NSApplicationDirectory
NSDeveloperApplicationDirectory
NSLibraryDirectory
NSDeveloperDirectory
NSApplicationSupportDirectory
NSUserDomainMask
NSLocalDomainMask
NSSystemDomainMask
BOOL expandTilde
这是存储此类文件的正确方法吗?
NSSearchPathDirectory
和NSSearchPathDomainMask
有几种选择。
那么iOS上的expandTilde
怎么样呢?
是否有更好的方法,而不是使用NSString
创建路径objectAtIndex
并附加文件名,然后将其转换为NSURL
?
感谢。
答案 0 :(得分:2)
使用NSApplicationSupportDirectory
将是我的第一选择。
但请记住以下几点:
您确实希望为YES
参数传递expandTilde
,以便在模拟器中运行应用时,您的应用会返回正确的路径。在真正的iOS设备上,它没什么区别。
请勿使用stringByAppendingString:
创建路径。使用stringByAppendingPathComponent:
。
NSString *appSupportPath = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) firstObject];
NSString *filePath = [appSupportPath stringByAppendingPathComponent:@"important.txt"];
NSURL *fileURL = [NSURL fileURLWithPath:filePath];
您可以使用NSURL
直接NSFileManager
:
NSURL *appSupportURL = [[[NSFileManager defaultManager] URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask] firstObject];
NSURL *fileURL = [appSupportURL URLByAppendingPathComponent:@"important.txt"];