我一直在关注本指南,使用 NSCoding 将数据保存到 plist。据我所知,我已逐步按照指南进行操作,并查看了示例代码,但是在实际保存数据时,它似乎并没有保存它,也没有调用保存功能。我通过一个按钮调用保存功能:
- (IBAction)saveAll:(id)sender {
NSLog(@"start saveall");
_conosirDoc.data.wineType = _wineType.text;
_conosirDoc.data.wineTitle = _wineTitle.text;
_conosirDoc.data.wineYear = _wineYear.text;
_conosirDoc.data.wineVolume = _wineVolume.text;
_conosirDoc.data.wineRating = _wineRating.text;
_conosirDoc.data.wineCountry = _wineCountry.text;
_conosirDoc.data.wineRegion = _wineRegion.text;
_conosirDoc.data.wineGrapes = _wineGrapes.text;
[_conosirDoc saveData];
NSLog(@"%@", _conosirDoc.data.wineType);
NSLog(@"end saveall");
}
因此,当单击按钮时,日志显示为:
start saveall
(null)
end saveall
所以从那里我在 saveData 函数中设置了以下 NSLog:
- (void)saveData {
NSLog(@"being called?");
if (_data == nil) return;
NSLog(@"START");
[self createDataPath];
NSLog(@"END");
NSString *dataPath = [_docPath stringByAppendingPathComponent:kDataFile];
NSLog(@"%@", dataPath);
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:_data forKey:kDataKey];
[archiver finishEncoding];
[data writeToFile:dataPath atomically:YES];
}
从这里开始,这些 NSLog 都没有出现在输出中,我无法弄清楚为什么它没有被正确调用。如果您需要更多信息,请告诉我。
谢谢。