NSPropertyListSerialization propertyListWithData produces incompatible conversion warning/error

天大地大妈咪最大 提交于 2019-12-07 11:10:14

问题


I'm trying to read in data from a plist, using this code:

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

It kicks out a warning/error stating:

"Incompatible integer to pointer conversion sending 'int' to parameter of type 'NSPropertyListFormat' (aka 'unsigned int *').

I've no idea what's going on. I chose the NSPropertyListXMLFormat_v1_0 from the code-hinting choices.

Also, I can't find the rationale for this in the documentation so far: why do you have to declare a pointer variable for "error", and then use "&error" as the argument for error:. What is the ampersand for?


回答1:


When you're trying to read data using NSPropertyListSerialization, you don't specify a format: You either pass in NULL, or pass the memory address of a variable.

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

The ampersand means "the address in memory where this variable is stored" – by using it, you're giving the method the ability to write to that memory location, and replace the original content of the variable. Both plistFormat and (potentially) error will contain something new after this method is called: plistFormat will tell you what format the plist was in, as opposed to the other way around, and error (which should be of class NSError) will tell you about any errors that were encountered.



来源:https://stackoverflow.com/questions/6133951/nspropertylistserialization-propertylistwithdata-produces-incompatible-conversio

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!