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 回答