2011-05-26 39 views
4

我試圖從plist中讀取數據,使用此代碼:NSPropertyListSerialization propertyListWithData產生不兼容的轉換警告/錯誤

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」作爲錯誤參數。什麼是&符號?

回答

27

當您嘗試讀取數據使用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類的)會告訴你遇到任何錯誤。

+0

哦,我明白了。在Property List Programming Guide中,Apple描述了使用這種Objective-C方法來讀取數據,但快速入門代碼示例稍微複雜一些,我錯過了這一點。非常感謝。 – Gregir 2011-05-26 11:49:44

相關問題