NSPropertyListSerialization propertyListWithData产生不兼容的转换警告/错误

时间:2011-05-26 05:09:57

标签: ios objective-c serialization plist

我正在尝试使用此代码读取plist中的数据:

NSString *error;    
NSData * tempData = [[NSData alloc] initWithContentsOfFile:@"Data.plist"];
NSDictionary *temp = [NSPropertyListSerialization propertyListWithData:tempData options:NSPropertyListImmutable format:NSPropertyListXMLFormat_v1_0 error:&error];

它会发出警告/错误说明:

  

“与'NSPropertyListFormat'类型的参数发送'int'不兼容的整数到指针转换(又名'unsigned int *')。

我不知道发生了什么。我从代码提示选项中选择了NSPropertyListXMLFormat_v1_0。

另外,我到目前为止在文档中找不到这个的基本原理:为什么你必须为“错误”声明一个指针变量,然后使用“& error”作为错误的参数:什么是&符号?

1 个答案:

答案 0 :(得分:27)

当您尝试使用NSPropertyListSerialization 读取数据时,您没有指定格式:您要么传入NULL,要么传递变量的内存地址。

NSError *error;    
NSData * tempData = [[NSData alloc] initWithContentsOfFile:@"Data.plist"];
NSPropertyListFormat plistFormat;
NSDictionary *temp = [NSPropertyListSerialization propertyListWithData:tempData options:NSPropertyListImmutable format:&plistFormat error:&error];

&符号表示“存储此变量的内存中的地址” - 通过使用它,您可以使该方法能够写入该内存位置,并替换变量的原始内容。调用此方法后,plistFormat和(可能)error都会包含新内容:plistFormat会告诉 plist所处的格式,而不是反过来说,error(应该是类NSError)会告诉你遇到的任何错误。