Re: [問題] 用NSUserDefaults 儲存 陣列圖片

看板MacDev作者 (←這人是超級笨蛋)時間12年前 (2012/11/04 21:50), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《j5307 (JJ)》之銘言: : //有問題的地方 : [Marray addObject: thumbnailImg]; : [SaveDefaults setObject:array forKey:@"Key"]; : for (int i=0; i<Marray.count; i++) { : NSLog(@"test:%@",[Marray objectAtIndex:i]); : } : 測試結果 : test:<UIImage: 0x22575960> : 但在做第二次動作時 會把第一次蓋掉 : test:<UIImage: 0x2257a2c0> : 更改問題的地方成 字串儲存 : [Marray addObject: @"try"]; : 測試結果 : test:try : 第二次測試時 就會顯示兩次 : test:try : test:try 不是第二次會把第一次蓋掉 而是因為 NSUserDefaults 根本沒把圖片存進去, 所以你第二次不會顯示第一次的值 http://goo.gl/9fkL4 [developer.apple.com] A default object must be a property list, that is, an instance of (or for collections a combination of instances of): NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary. UIImage 根本就不能存 如果你想用 NSUserDefaults 存圖片 正確的方法是使用 NSData UIImage *image = ...; // Some image NSData *imageData = UIImagePNGRepresentation(image); // 也有 JPEG 版 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:imageData forKey:@"image"]; [defaults synchronize]; 不過要注意 NSNserDefaults 是設計給輕量資料使用的機制 存太大的東西會嚴重影響效能, 請小心使用 -- ╱ ̄ ̄ ̄╲ ▏◢█◣ 成龍表示: 是喔... ′/ ‵ ╰╯ ψQSWEET █◤ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.81.146

11/05 14:34, , 1F
謝謝分享
11/05 14:34, 1F
文章代碼(AID): #1GbdB3dv (MacDev)
文章代碼(AID): #1GbdB3dv (MacDev)