【问题标题】:NSPropertyListSerialization propertyListWithData produces incompatible conversion warning/errorNSPropertyListSerialization propertyListWithData 产生不兼容的转换警告/错误
【发布时间】:2011-05-26 05:09:56
【问题描述】:

我正在尝试使用以下代码从 plist 中读取数据:

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

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

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

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

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

【问题讨论】:

    标签: ios objective-c serialization plist


    【解决方案1】:

    当您尝试使用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 类)会告诉您遇到的任何错误。

    【讨论】:

    • 哦,我明白了。在 Property List Programming Guide 中,Apple 描述了使用此 Objective-C 方法读取数据,但 Quick Start 代码示例稍微复杂一些,我错过了这一点。非常感谢。
    猜你喜欢
    • 2017-12-21
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    相关资源
    最近更新 更多