1

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 はどれも出力に表示されず、適切に呼び出されていない理由がわかりません。さらに情報が必要な場合はお知らせください。

ありがとう。

4

1 に答える 1