我正在尝试使用此代码读取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”作为错误的参数:什么是&符号?
答案 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
)会告诉你遇到的任何错误。