由於最近工作需求有用到NSUserDefaults來做資料的儲存,
本來以為把平常用的NSMutableArray轉成NSArray就可以騙過她塞進去,想不到出現錯誤訊息。
說我自製的物件是non-property的,所以不給存。 囧rz
survey了一些資料後發現,如果想存的話,通常是建議先轉成NSData,
當然(NSData *)這招我try過了,當然不行。 XD
從結果來看是因為,要轉成NSData 轉的過程要讓xcode知道要用甚麼方式轉,反之亦然,從NSData轉回來時要隻到對應的型態是什麼才有辦法encode回來。
簡單來說,必須要在自定義的物件設定decode與encode的方式。
實作:
-(void) encodeWithCoder: (NSCoder *)coder{
//self.property 換成你自定義的property的名字,例如Name,UserID
[coder encodeObject: self.property forKey: @”property”];
//其它的property以此類推
}
可以讓妳的物件成功傳成NSData
如果還要轉回來的話(有人不轉回來的嗎。XD)
就必須實作
- (id)initWithCoder: (NSCoder *)decoder{
if(self = [super init]){
self.property = [decoder decodeObjectForKey: @“property”];
//以此類推。
}
}
看到沒有中文的資料,就順便做個筆記,有問題也歡迎大家多多指教。 xD
2014年7月24日 星期四
[Objective-C]將自製物件轉成 NSData 與從NSData轉回原物件
訂閱:
張貼留言
(
Atom
)
沒有留言 :
張貼留言