2

を に保存UIImageし、アプリの別の場所でNSDictionaryを渡しています。NSDictionarygridImages はNSMutableArray

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

何が起こっているのですか?

編集:

の場合、次のよう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];

しかし、それでも同じエラーが返されます

4

1 に答える 1

6

プロパティリスト以外のオブジェクトをそのまま設定UIImageすることはできません。NSUserDefaultsUIImage

ドキュメントディレクトリから画像のパスを保存することをお勧めします。

このコードが役に立ちます。

// 画像を設定

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

NSMutableDictionary *dictOne = [NSMutableDictionary dictionaryWithCapacity:0];

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

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

// 画像を取得

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

    UIImage *image = [UIImage imageWithContentsOfFile:[dict objectForKey@"image"]];

編集:

 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];

ハッピーコーディング。

于 2013-10-12T09:40:03.197 に答える