我想序列化一个数组和一个整数。当我只保存整数时,它可以工作。当我添加数组时,它会失败。
NSArray *tempArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [tempArray objectAtIndex:0];
tempArray = nil;
tempArray = [NSArray arrayWithObjects:
( (someOtherArray != nil) ? (id) someOtherArray : [NSNull null] ),
[NSNumber numberWithInt:someIntValue],
nil];
NSString *filePath = [NSString stringWithFormat:@"%@/%@.plist", docsPath, kDataFilename];
NSString *errString;
NSData *serializedStrings= [NSPropertyListSerialization
dataFromPropertyList:tempArray
format:NSPropertyListBinaryFormat_v1_0
errorDescription:&errString];
if( errString != nil ) {
NSLog(@"SaveData NSpropertyListSerialization error: %@", [errString description]);
[errString release];
}
// returns NO
BOOL success = [serializedStrings writeToFile:filePath atomically:YES];
数组可能是零,所以我先检查一下。我也试过[NSNumber numberWithInt:0]而不是[NSNull null]只是为了看看它是否可以工作而不是null,但事实并非如此。
我也得到:NSpropertyListSerialization错误:格式
的属性列表无效答案 0 :(得分:0)
您无法将+[NSNull null]
存储在plist中。您需要一个像占位符值一样的解决方法(即使NSNull
本身就是一个占位符值...)