PathForResource? без использования расширения (Iphone)
Вот что я делаю, когда создаю образ с помощью пути в комплекте:
UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image" ofType:@"jpg"]];
Что я хочу сделать, это попытаться найти путь для моего изображения, но без использования расширения, не используя 'ofType' (потому что имя моего изображения и ее расширение хранится в моей базе данных) примерно так:
UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image.jpg"]];
Но я не знаю, как это сделать.
С уважением,
Ответы
Ответ 1
Почему бы вам не разбить строку, полученную из БД?
NSString* fullFileName = @"image.jpg";
NSString* fileName = [[fullFileName lastPathComponent] stringByDeletingPathExtension];
NSString* extension = [fullFileName pathExtension];
Теперь вы можете просто использовать:
[[NSBundle mainBundle] pathForResource:fileName ofType:extension]];
Ответ 2
Вы можете легко использовать метод NSBundle без передачи расширения, просто передайте nil для расширения.
[[NSBundle mainBundle] pathForResource:@"image.jpg" ofType:nil];
Ответ 3
- (NSData *)applicationDataFromFile:(NSString *)fileName {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];
NSData *myData = [[[NSData alloc] initWithContentsOfFile:appFile] autorelease];
return myData;
}
взято из http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/FilesandNetworking/FilesandNetworking.html#//apple_ref/doc/uid/TP40007072-CH21-SW21
Может быть легко адаптирован, если вы хотите, чтобы он возвращал UIImage вместо NSData.
Кроме того, вы не скажете, сохраняете ли вы изображения в каталоге документов или добавляете их в свой комплект приложений перед компиляцией. потому что если это последнее, вы можете использовать [UIImage imageNamed:(NSString *)filename]
для получения изображения. Он ожидает расширение как часть имени файла.
Ответ 4
Самый простой способ - сохранить имя и тип файла в своей базе данных отдельно и получить их с помощью первого метода. Я не уверен, что вам удастся реализовать последний.
Ответ 5
Я обнаружил, что с расширением ".jpg" необходимо было использовать Type для расширения для приложения для работы с iPod Touch, тогда как с расширением ".png" я мог просто поставить "image.png" в pathForResource и скажем о типе: ноль. Но все версии работали на симуляторе.
В комплект приложения входит файл изображения, и я использую:
[[NSBundle mainBundle] pathForResource:@"Auto" ofType:@"jpg"]
чтобы получить путь.