Spo*_*ude 2 objective-c nsfilemanager ios-simulator ios8.1
我知道iOS Simulator每次运行时都会在不同的目录中找到; 考虑到这一点,我有这个代码,它给了我Core Data sqlite文件的目录:
// find current directory for saori.sqlite
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *documentDirectory = [[fileManager URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask]firstObject];
NSString *sqliteFilePath = [[documentDirectory URLByAppendingPathComponent:@"Application Support/SalonBook/saori.sqlite"] absoluteString];
if ([fileManager fileExistsAtPath:sqliteFilePath])
[MagicalRecord cleanUp]; // set stack, etc to 'nil'
else {
NSLog(@"\n\n-->sqlite files not found"); // log message "unable to find sqlite files
return;
}
Run Code Online (Sandbox Code Playgroud)
这是sqliteFilePath对象的打印输出:
Printing description of sqliteFilePath:
file:///Users/rolfmarsh/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/C8FF20F0-41E4-4F26-AB06-1F29936C2208/Library/Application%20Support/SalonBook/saori.sqlite
Run Code Online (Sandbox Code Playgroud)
这是Finder文件的图像:

问题是:我转到sqliteFilePath并且确实存在saori.sqlite文件!为什么-fileExistsAtPath失败?
因为它仍然是一个URL.文件路径没有协议,因此路径的前缀file:///无效且无法解析.由于无效路径不包含任何文件,因此fileExistsAtPath:返回NO.
不过不用担心absoluteString,您可以只调用path而不是调用URL对象,它将返回路径.
| 归档时间: |
|
| 查看次数: |
1536 次 |
| 最近记录: |