Проверка наличия изображения в Bundle - iPhone
У меня есть приложение с несколькими изображениями. Я хочу проверить, существует ли изображение в комплекте. Если это произойдет, я покажу его, если не я покажу сменное изображение.
Ниже приведен код, который я придумал, однако он не работает. Может ли кто-нибудь определить, что не так?
Спасибо!
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"]];
}
EDIT - Изменен следующий пост Саймона ниже, однако все еще не работает правильно. Вызов Else всегда срабатывает.
Ответы
Ответ 1
Вы смотрите в своем каталоге приложений. Это действительно то место, где вы ожидаете найти изображения? Если они фактически добавлены в ваш пакет, вам нужно сделать это:
NSString *path = [[NSBundle mainBundle] pathForResource:uniqueID ofType:@"jpg"];
Еще проще - просто попробуйте загрузить именованное изображение. Если это не удается, загрузите значение по умолчанию:
UIImage *tempImage = [UIImage imageNamed:photo];
if (!tempImage) {
tempImage = [UIImage imageNamed:@"iPhoneHD.jpg"]
}
[image setImage:tempImage];
Ответ 2
+(BOOL) fileExistsInProject:(NSString *)fileName
{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *fileInResourcesFolder = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:fileName];
return [fileManager fileExistsAtPath:fileInResourcesFolder];
}
- мой ответ.
возвращает YES, если файл существует в bundle.you не нужно ничего делать с помощью пути.
просто скажите [fileExistsInProject: @ "blabla.ext" ]
Ответ 3
У вас есть неверное утверждение if, вы говорите, если оно НЕ существует, а затем используйте его, иначе используйте значение по умолчанию..... вы хотите...
if([fileManager fileExistsAtPath:path])