我将图像缓存到目录(/ Library/Caches/ImageCache /)。当目录超过特定大小时,我想删除目录中最旧的文件。为了完成这个任务,我使用NSFileManager来检索目录内容。然后我尝试按日期对这个数组进行排序并删除最老的对象。按创建日期排列NSURL对象数组
我的问题是,当我尝试按键NSURLCreationDateKey排序数组时,我的程序崩溃。
NSFileManager *defaultFM = [NSFileManager defaultManager];
NSArray *keys = [NSArray arrayWithObjects:NSURLNameKey, NSURLCreationDateKey, nil];
NSURL *cacheDirectory = [self photoCacheDirectory]; // method that returns cache URL
NSArray *cacheContents = [defaultFM contentsOfDirectoryAtURL:cacheDirectory
includingPropertiesForKeys:keys
options:NSDirectoryEnumerationSkipsSubdirectoryDescendants
error:nil];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:NSURLCreationDateKey ascending:YES];
NSArray *sortedArray = [cacheContents sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
该程序崩溃的最后一行。错误:
*终止应用程序由于未捕获的异常“NSUnknownKeyException”,原因:“[valueForUndefinedKey:]:此类不是密钥值的关键NSURLCreationDateKey顺应编码-”。
谢谢你的建议院长。尽管如此,我仍然遇到同样的错误。 – 2012-01-04 00:02:11
如果不应该完全一样,它应该说'这个类不是关键值编码兼容的关键fileAttributes.NSURLCreationDateKey.'' - 无论如何,请参阅我的编辑另一个解决方案:) – deanWombourne 2012-01-04 00:04:18
好的,我是一个白痴 - 我一直假设你使用的是统计员,但看着你的问题,你显然不是。我是个白痴!看到我编辑的比较器块编辑应该帮助做你想做的! – deanWombourne 2012-01-04 00:20:49