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

PathForResource? без использования расширения (Iphone)

Вот что я делаю, когда создаю образ с помощью пути в комплекте:


UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image" ofType:@"jpg"]];

Что я хочу сделать, это попытаться найти путь для моего изображения, но без использования расширения, не используя 'ofType' (потому что имя моего изображения и ее расширение хранится в моей базе данных) примерно так:


UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image.jpg"]];

Но я не знаю, как это сделать.

С уважением,

4b9b3361

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

чтобы получить путь.