为什么我不能序列化这些数据?

时间:2011-02-17 16:46:12

标签: iphone objective-c

我想序列化一个数组和一个整数。当我只保存整数时,它可以工作。当我添加数组时,它会失败。

    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错误:格式

的属性列表无效

1 个答案:

答案 0 :(得分:0)

您无法将+[NSNull null]存储在plist中。您需要一个像占位符值一样的解决方法(即使NSNull本身就是一个占位符值...)