0

次のエラーが常に発生します。

saving dictionary error Property list invalid for format (property lists cannot contain objects of type 'CFNull')

次のコードを使用してファイルを保存しようとすると:

- (BOOL)saveDictionary:(NSDictionary *)dict toFile:(NSString *)file {
    BOOL success = NO;
    if (file == nil || dict == nil) return NO;

    NSString *errorStr = nil;
    NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:dict
                                                                   format:NSPropertyListBinaryFormat_v1_0
                                                         errorDescription:&errorStr];
    if (errorStr) {
        // Darn.
        NSLog(@"saving dictionary error %@", errorStr);
        [errorStr release];
    } else {
        //    [plistData writeToFile:file atomically:YES];
        // (ankit): Changing this to NO for speed.
        success = [plistData writeToFile:file atomically:NO];
    }

    return success;
}

理由はありますか?

4

1 に答える 1

3

その方法は完全に問題ありません。そのエラーの原因はNSDictionary内のコンテンツです。これをplistファイルとして保存しているため、ディクショナリ内のすべてには、NSString、NSDate、NSArray、NSDictionary、NSNumber、およびNSDataのみが含まれている必要があります。これら以外のものは、上記と同様のエラーになります。したがって、ディクショナリ内にあるものを確認し、オブジェクトのクラスのいずれかが上記のリストに含まれていない場合は、ディクショナリに入れる前に、まずオブジェクトをNSDataに入れてください。

于 2012-06-21T05:52:37.467 に答える