我有这个问题...我需要从我的应用程序的资源中加载一个图像,例如mystuff01.jpg,但也许可以称为mystuff01.gif或png,现在,这样做的最佳解决方案是什么? 在我看来,如果文件存在并且是否存在加载它,则有一个循环来检索... 有更好的解决方案吗? 感谢
答案 0 :(得分:2)
如果要从文件系统而不是捆绑包加载文件,那么您可能想要使用它:
NSString *assetsDirectory = [....] // your base asset directory, e.g. documents directory
NSArray *extensions = [NSArray arrayWithObjects:@"png", @"jpg", @"jpeg", nil];
NSFileManager *fm = [NSFileManager defaultManager];
NSString *storageLocation = nil;
for (NSString *ext in extensions) {
NSString *testLocation = [NSString stringWithFormat:@"%@/mystuff.%@", assetsDirectory, ext];
if ([fm fileExistsAtPath:testLocation]) {
storageLocation = testLocation;
break;
}
}
// file name is in "storageLocation" now
答案 1 :(得分:1)
我认为其中一个解决方案是创建一个NSArray {@“。jpg”,@“。png”},遍历数组并将扩展名添加到文件名中,然后检查文件名+扩展名是否存在,然后你加载它。它会更容易,并且可以使用循环
完成答案 2 :(得分:1)
来自UIImage
在iOS 4及更高版本中,名称为 文件不需要指定 文件扩展名。在iOS 4之前, 你必须指定文件名 扩展
否则,您必须尝试每个扩展名。您可以将每个扩展名的名称直接传递给[UIImage imageNamed:]
,找到一个与[mainBundle pathForResource:ofType:];
一起使用的名称,或使用NSFileManager获取资源列表并查找最接近的匹配项。