2010-07-09 210 views
0

我有这个问题...我需要从我的应用程序的资源加载一个图像,例如mystuff01.jpg,但也许被称为mystuff01.gif或PNG,现在,什么是最好的解决方案做到这一点? 在我看来,有一个周期来检索文件是否存在,如果存在加载它... 有更好的解决方案? 谢谢iPhone加载图像没有扩展名

回答

1

我认为其中一个解决方案是创建一个NSArray {@“。jpg”,@“。png”},遍历数组并将扩展名添加到文件名中,然后检查文件名+扩展名存在,然后加载它。这将是更容易做,并能与环

+0

是的,这就是我的想法。我会尽力 – ghiboz 2010-07-09 08:39:55

1

完成从UIImage

在iOS 4及更高版本,不需要 文件名来指定 文件扩展名。在iOS 4之前, 必须指定文件名 扩展名。

否则,你将不得不尝试每个扩展。您可以直接将每个扩展名的名称传递给[UIImage imageNamed:],找到一个与[mainBundle pathForResource:ofType:];一起使用的名称,或者使用NSFileManager获取资源列表并查找最接近的匹配项。

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