2013-10-12 2 views
2

Я храню UIImage в NSDictionary, а затем передаю NSDictionary в другом месте приложения. gridImages является NSMutableArrayНепризнанная ошибка выбора при добавлении UIImage в массив

NSDictionary *pageDict = [pageArray objectAtIndex:0]; 

UIImage *pageImage = [pageDict objectForKey:@"image"]; 

[gridImages addObject:pageImage]; 

pagedict возвращает

{ 
    class = is; 
    image = "<UIImage: 0x14e20e10>"; 
    name = kaka; 
    page = 64; 
} 

который предположительно я

UIImage *pageImage = [pageDict objectForKey:@"image"]; 

Однако, когда я пытаюсь добавить, что UIImage в массив, я получаю эту ошибку:

-[UIImage stringByDeletingPathExtension]: unrecognized selector sent to instance 0x14e20e10 

Любая идея, что происходит?

EDIT:

Для NSDictionary, я пытался хранить UIImage в NSData:

NSData *imageData = UIImagePNGRepresentation(textbookImage); 
    [pageDict setObject:imageData forKey:@"image"]; 
    [pageDict setObject:textbookName forKey:@"name"]; 
    [pageDict setObject:page forKey:@"page"]; 
    [pageDict setObject:nameOfClass forKey:@"class"]; 

И разборе это так:

NSData *imageData = [pageDict objectForKey:@"image"]; 
    UIImage *pageImage = [UIImage imageWithData:imageData]; 

Но она по-прежнему возвращает ту же ошибку

+0

Вы вызываете метод ('stringByDeletingPathExtension') на' pageImage', который не существует в классе 'UIImage'. – pNre

+0

Где я называю этот метод? – Spenciefy

+0

[pageDict objectForKey: @ "image"] - это URL-адрес изображения или данных изображения? –

ответ

6

Вы не можете установить UIImage в NSUserDefaults как UIImage является не являющимся владельцем объекта объект.

Вы лучше сохранили путь изображения от каталог документов.

Этот код поможет.

// SET Изображение

NSString *strImagePath = //path of image from documents directory 

NSMutableDictionary *dictOne = [NSMutableDictionary dictionaryWithCapacity:0]; 

[dictOne setObject:strImagePath forKey:@"image"]; 

[[NSUserDefaults standardUserDefaults] setObject:dictOne forKey:@"dict"]; 

// GET изображение

NSMutableDictionary *dict = [[NSUserDefaults standardUserDefaults] objectForKey:@"dict"]; 

    UIImage *image = [UIImage imageWithContentsOfFile:[dict [email protected]"image"]]; 

EDIT:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *strImageFileName = [documentsDirectory stringByAppendingPathComponent:@"yourImageFileName"]; 
UIImage *image = // Your image; 

NSData *dataImage = UIImageJPEGRepresentation(image, 0.5f); 
/* Good image quality 
     NSData *dataImage = UIImagePNGRepresentation(image); 
*/ 

[dataImage writeToFile:strImageFileName atomically:YES]; 

День кодирование.

+0

Как найти strImagePath? мое изображение - это uiimage, взятое непосредственно с камеры iphone – Spenciefy

+0

, когда вы получите изображение, затем сохраните его в каталоге документов с определенным именем файла. Затем сохраните это имя файла в strImagePath. получил это @Spenciefy? –

+0

@Spenciefy, см. Мое обновленное последнее изменение. –

Смежные вопросы