2011-11-28 116 views
0

我無法將plist文件轉換爲可變數組,因此我可以使用它填充表視圖。我創建了一個名爲MyDeals.plist的plist。我將根作爲數組,然後將兩個字典添加爲該數組的子集,然後用字符串填充這些字典。將PList信息傳遞給字符串,然後傳遞給可變數組(iOS)

的代碼如下:

NSString *myfile = [[NSBundle mainBundle] pathForResource:@"MyDeals" ofType:@"plist"]; 
NSLog(@"%@", myfile); 
NSMutableArray *myArray = [[NSMutableArray alloc] initWithContentsOfFile:myfile]; 
NSLog(@"%@", myArray); 
self.dealsArray = myArray; 
[myArray release]; 

第一的NSLog註銷的plist文件的正確路徑,以便它工作直到那時但隨後的第二數收益「(空)」,所以myArray的沒有按」實際上由於某種原因從myfile獲取信息。有任何想法嗎?謝謝!

回答

1

嘗試首先將文件加載到NSData中,以便您可以看到問題所在。

NSError *error; 
NSData *data = [NSData dataWithContentsOfFile:myfile options:0 error:&error]; 
if (!data) { 
    NSLog(@"error loading plist from %@: %@", myfile, error); 
    return; 
} 
self.dealsArray = [NSPropertyListSerialization propertyListWithData:data 
    options:NSPropertyListMutableContainers format:NULL error:&error]; 
if (!self.dealsArray) { 
    NSLog(@"error parsing plist from %@: %@", myfile, error); 
    return; 
} 
+0

它沒有記錄任何錯誤消息。 'data'不是null/undefined,也不是'self.dealsArray'(我假設至少自錯誤消息沒有運行)。這讓我更加困惑,因爲self.dealsArray與myArray相等,但myArray在註銷時爲null。錢幣。 – MillerMedia

+0

那麼這是否意味着我的代碼正確設置了「self.dealsArray」?如果是這樣,歡迎您。 :) –

+0

哦,哈哈,是的。我在一分鐘前試圖得到一個錯誤消息,我沒有意識到這是發生了什麼。我登出了它,它效果很好。感謝Rob! – MillerMedia

0

我可能是錯的,但我相信plist必須反序列化爲字典而不是數組,即使根元素是數組。如果你想從一個文件desirialize數組它可能應該是一個從NSArray writeToFileAtmoically創建的文件。