我有一个包含大量图片(1000+)的应用。我有一个数据库表,其中包含这些图像的所有文件名。使用UIImage* image = [UIImage imageNamed:...]
由于图像数量很多,我想以编程方式进行测试,以确保数据库中包含的所有图像实际上都存在于项目中。为实现这一目标,我将从表中提取所有文件名,循环遍历每个文件名,运行上述代码,并检查是否image != nil
。这很好用。
问题在于我想确认正常分辨率和高分辨率(@ 2x)图像都在那里。如果存在高分辨率文件但是普通分辨率文件不存在,我的代码将不会检测到这一点。
我是否有某种方法可以实现这一目标而无需运行此过程两次,每种分辨率类型一次?我可以强制SDK忽略@ 2x文件吗?
答案 0 :(得分:6)
您应该使用NSFileManager
。它可能会快得多,因为它实际上不会加载图像文件的内容。对于每个fileName,使用NSFileManager
的{{1}}方法检查图像。然后,将“@ 2x”附加到基本名称以检查2x图像。
答案 1 :(得分:2)
我会使用NSBundle来定位文件,这样就不必将UIImage加载到内存中,你可以使用类似的东西......
NSBundle *myBundle = [NSBundle mainBundle];
if([myBundle pathForResource:@"MyImage" forType: @"png"] == nil){
// low res image isn't there
}
if([myBundle pathForResource:@"MyImage@2x" forType: @"png"] == nil){
// high res image isn't there
}
应该快得多......