gpt4 book ai didi

objective-c - 当路径正确时,为什么 NSFIleManager -fileExistsAtPath 找不到现有文件?

转载 作者:行者123 更新时间:2023-12-02 07:26:17 25 4
gpt4 key购买 nike

我知道每次运行 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 的文件图像:
enter image description here

问题是:我去 sqliteFilePath 并且 saori.sqlite 文件确实在那里!为什么是 -fileExistsAtPath 失败?

最佳答案

因为它仍然是一个 URL。文件路径没有协议(protocol),因此路径的前缀 file:///无效,无法解决。由于无效路径不包含任何文件,fileExistsAtPath:返回 NO .

不过不用担心,而不是调用 absoluteString在 URL 对象上,您只需调用 path相反,它将返回路径。

关于objective-c - 当路径正确时,为什么 NSFIleManager -fileExistsAtPath 找不到现有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28289141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com