因此,我意識到我需要使用NSCoding將自定義對象保存到plist。使用NSCoder將自定義對象保存到plist中
我正在努力的部分正是我在執行initWithCoder
和encodeWithCoder
方法後做的。他們分別返回id
和void
,所以如果他們已經將我的對象轉換爲NSData或他們對他們做了什麼,數據在哪裏,那麼我可以保存它?
我有方法的建立正是如此:
- (id)initWithCoder:(NSCoder *)decoder { // Decode
if (self = [super init]) {
self.name = [decoder decodeObjectForKey:@"gameName"];
self.genre = [decoder decodeObjectForKey:@"gameGenre"];
self.rating = [decoder decodeObjectForKey:@"gameRating"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)encoder { // Encode
[encoder encodeObject:self.name forKey:@"gameName"];
[encoder encodeObject:self.genre forKey:@"gameGenre"];
[encoder encodeObject:self.rating forKey:@"gameRating"];
}
試圖找出下一個步驟是獲得保存到的.plist這些對象(這已經是一個NSMutableArray),並回顧時再 - 打開應用程序。
任何幫助表示讚賞!
努力(我認爲)告訴它我想它寫一個數組的時候我打一個錯誤。在此行上獲取「預期標識符」: '[rootObject setValue:[self.dataController.masterGameList] forKey:@「games」];' – Luke
'self.dataController.masterGameList'是您的對象圖的根對象想堅持下去?如果是這樣,那麼你將存檔該對象,例如'NSData * archivedData = [NSKeyedArchiver archivedDataWithRootObject:self.dataController。masterGameList];' – FluffulousChimp