我有一个包含大量图片的应用。我想检查捆绑中是否存在图像。如果是的话我会显示它,如果没有,我会显示替换图像。
下面的代码是我提出的,但是它不起作用。谁能发现什么是错的?
谢谢!
NSString * photo = [NSString stringWithFormat:@"%d.jpg", UniqueID];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:photo];
if([fileManager fileExistsAtPath:path])
{
[image setImage:[UIImage imageNamed:photo]];
}
else {
NSLog(@"Hello");
[image setImage:[UIImage imageNamed:@"iPhoneHD.png"]];
}
编辑 - 在Simon的帖子下面更改,但仍然无法正常工作。其他陈述总是触发。
答案 0 :(得分:24)
您正在查看App的文档目录。这真的是你期望找到图像的地方吗?如果它们实际上是添加到您的包中的资源,那么您需要这样做:
NSString *path = [[NSBundle mainBundle] pathForResource:uniqueID ofType:@"jpg"];
更简单 - 只需尝试加载指定的图像。如果失败,则加载默认值:
UIImage *tempImage = [UIImage imageNamed:photo];
if (!tempImage) {
tempImage = [UIImage imageNamed:@"iPhoneHD.jpg"]
}
[image setImage:tempImage];
答案 1 :(得分:17)
+(BOOL) fileExistsInProject:(NSString *)fileName
{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *fileInResourcesFolder = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:fileName];
return [fileManager fileExistsAtPath:fileInResourcesFolder];
}
是我的答案。
答案 2 :(得分:6)
if语句错误,你说如果它不存在,那就用它,否则使用默认的......你想要...
if([fileManager fileExistsAtPath:path])