我不断收到以下错误:
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;
}
知道为什么吗?
最佳答案
该方法非常好,正是NSDictionary中的内容导致了该错误。由于将其保存为plist文件,因此字典中的所有内容都应仅包含NSString,NSDate,NSArray,NSDictionary,NSNumber和NSData。除这些以外的其他任何情况都会导致与您上面的错误类似的错误。因此,请仔细检查字典中的内容,如果对象的任何类都不在上面的列表中,请先将对象放入NSData,然后再将其放入字典中。