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

我试图从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 *')types的参数。

我不知道发生了什么事。 我从代码提示select中select了NSPropertyListXMLFormat_v1_0。

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

当您尝试使用NSPropertyListSerialization 读取数据时,您不指定格式:您可以传递NULL或传递variables的内存地址。

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

“&”意味着“存储器中存储该variables的地址” – 通过使用它,可以使该方法能够写入该存储器位置,并replace该variables的原始内容。 调用这个方法后, plistFormat和(潜在的) error都会包含一些新的东西: plistFormat会告诉 plist在什么格式,而不是相反的方式, error (应该是类NSError )会告诉你任何遇到的错误。