Подтвердить что ты не робот

Проверка наличия изображения в 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 всегда срабатывает.

4b9b3361

Ответ 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])