簡體   English   中英

iPhone:如何使用NSUserDefaults存儲UIImage?

[英]iPhone:How can I store UIImage using NSUserDefaults?

我無法使用nsuserdefaults保存圖像並使應用崩潰,並且我還使用了自定義類UserInfo

-(void)encodeWithCoder:(NSCoder *)encoder
{
   NSData *imageData = UIImagePNGRepresentation(categoryImage);
   [encoder encodeObject:categoryName forKey:@"name"];
   [encoder encodeObject:imageData forKey:@"image"];
}

-(id)initWithCoder:(NSCoder *)解碼器和userInfo.categoryImage是UIImage變量。

原因:'-[UIImage encodeWithCoder:]:無法識別的選擇器已發送到實例0x7676a70'

userInfo = [[UserInfo alloc] init];

userInfo.categoryName = categoryName.text;
NSLog(@"Category Name:--->%@",userInfo.categoryName);

userInfo.categoryImage = image;

appDelegate.categoryData = [[NSMutableDictionary dictionaryWithObjectsAndKeys:
                                 userInfo.categoryName, @"name",userInfo.categoryImage,@"image", nil] mutableCopy];


[appDelegate.categories addObject:appDelegate.categoryData];
NSLog(@"Category Data:--->%@",appDelegate.categories);

[appDelegate.categories addObject:userInfo.categoryName];
[appDelegate.categories addObject:userInfo.categoryImage];

[self saveCustomObject:userInfo.categoryName];

[self saveCustomObject:userInfo.categoryImage];


-(void)saveCustomObject:(UserInfo *)obj
{
    appDelegate.userDefaults = [NSUserDefaults standardUserDefaults];
    NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:obj];


    [appDelegate.userDefaults setObject:myEncodedObject forKey:@"myEncodedObjectKey"];
}

因此,請幫助我如何使用nsusedefaults存儲和檢索uiimage?

如果您是我,我將UIImage保存到文件中(使用[myImage hash];生成文件名),然后使用NSUserDefault ;-)將文件名另存為NSString。

UIImage沒有實現NSCoding協議,這就是為什么出現錯誤的原因。

商店:

NSData* imageData = UIImagePNGRepresentation(image);
NSData* myEncodedImageData = [NSKeyedArchiver archivedDataWithRootObject:imageData];
[appDelegate.userDefaults setObject:myEncodedImageData forKey:@"myEncodedImageDataKey"];
}

恢復:

NSData* myEncodedImageData = [appDelegate.userDefaults objectForKey:@"myEncodedImageDataKey"];
UIImage* image = [UIImage imageWithData:myEncodedImageData];

圖片保存在NSUserDefaults上:

      [[NSUserDefaults standardUserDefaults] setObject:UIImagePNGRepresentation(image) forKey:@"image"];   

在NSUserDefaults上檢索圖像:

NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"image"];
    UIImage* image = [UIImage imageWithData:imageData];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM