iOS:无法获取缓存目录的内容

标签 ios objective-c nsfilemanager

尝试获取缓存目录的内容:

NSError *error;
NSString *path = [[self.class cachesDirectoryURL] absoluteString];
NSArray *directoryItems = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:&error];

path 是正确的,我可以在 Finder 中看到它存在并且包含我的文件。
directoryItemsnil 并且 error

Error Domain=NSCocoaErrorDomain Code=260 "The folder “Caches” doesn’t exist." UserInfo={NSUnderlyingError=0x7982d2d0 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}, NSFilePath=file:///Users/seelts/Library/Developer/CoreSimulator/Devices/C1411C3D-91FB-4D91-83A4-D0747071AE36/data/Containers/Data/Application/800DE429-F10C-438E-BB04-2948C0B07E7C/Library/Caches/, NSUserStringVariant=(
    Folder
)}

我怎么了?

最佳答案

您使用的路径错误。要为应用程序获取正确的缓存目录,请使用:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cacheDirectory = [paths objectAtIndex:0];

cacheDirectory 中,您将收到这样的字符串路径(没有 file 方案):

/Users/username/Library/Developer/CoreSimulator/Devices/D55805E2-50FF-4D8D-8D04-490001AD6071/data/Containers/Data/Application/DE437461-E0F8-4C11-861E-2D1C56CDF6F1/Library/Caches


完整代码:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cacheDirectory = [paths objectAtIndex:0];

NSError *error;
NSArray *directoryItems = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:cacheDirectory error:&error];
NSLog(@"%@", directoryItems);

关于iOS:无法获取缓存目录的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35439491/

相关文章:

macos - 我可以从沙盒 Mac 应用程序中删除桌面上的文件吗?

cocoa-touch - NSDirectoryEnumerator : are the returned path relative?

objective-c - 由事件触发的 Cocoa URL 书签

ios - 访问 iOS 设备的控制台输出

ios - 如何在 Swift 中点击表格 View 的单元格

ios - 如何以编程方式将 JSON 数组从 UITableViewCell 传递到新的 UIViewController?

objective-c - 将filteredArrayUsingPredicate应用于多维NSMutableArray的特定列

ios - 在 iOS 中分发小部件的最佳方式

ios - 如何找到按下的子层?

iphone - 如何将图像从我们的应用程序导出到 Instagram?