我正在尝试使用以下代码从 plist 中读取数据:
NSString *error;
NSData * tempData = [[NSData alloc] initWithContentsOfFile:@"Data.plist"];
NSDictionary *temp = [NSPropertyListSerialization propertyListWithData:tempData options:NSPropertyListImmutable format:NSPropertyListXMLFormat_v1_0 error:&error];
它会发出警告/错误说明:
"Incompatible integer to pointer conversion sending 'int' to parameter of type 'NSPropertyListFormat' (aka 'unsigned int *').
我不知道发生了什么。我从代码提示选项中选择了 NSPropertyListXMLFormat_v1_0。
此外,到目前为止,我在文档中找不到这样做的基本原理:为什么必须为“error”声明一个指针变量,然后使用“&error”作为错误的参数:。符号是做什么用的?
最佳答案
当您尝试使用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
类)会告诉您遇到的任何错误。
关于ios - NSPropertyListSerialization propertyListWithData 产生不兼容的转换警告/错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6133951/