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

标签 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];

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

"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/

相关文章:

c# - 序列化对象时检测到循环引用 - C#、Json

iphone - 从 ZBar 转到另一个 View 时出错

iOS:像WhatsApp验证码TextField一样制作UITextField?

ios - 当字符长度发生变化时,让 UILabel 在 UIView 中居中。 iOS, Objective-C

iphone - UITablViewCell 上的 MKMapView 崩溃

java - 使用 Jackson 反序列化枚举 Shape.OBJECT 失败

ios - 无法在我的 iOS 应用程序中使用共享按钮?

ios - iphone 和 ipad 纵向视口(viewport)

iphone - 在应用程序本身中转弯导航

java - 可序列化的单例类