【发布时间】:2023-03-28 16:34:01
【问题描述】:
我知道 iOS 模拟器每次运行时都会在不同的目录中找到;考虑到这一点,我有这段代码,它为我提供了 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;
}
这是 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
这是来自 Finder 的文件图像:
问题是:我去sqliteFilePath,saori.sqlite 文件确实在那里!为什么 -fileExistsAtPath 失败了?
【问题讨论】:
-
不知道为什么这被否决了。有内容的合法问题。 +1。
-
我的经历几乎相似。似乎如果我存储为路径,然后转换为绝对 URL,它会失败。但是,如果我存储绝对字符串,则不要使用 fileURLWithPath,而是使用 urlWithName: 它成功,认为只要我在正确的一半上它就会互换
标签: objective-c ios-simulator nsfilemanager ios8.1