2012-06-28 65 views
0

我有一個plist文件被複制到主包的docs目錄中。如果該文件已經存在於文檔中,則不會將其複製到應該如何工作的位置。plist array null雖然plist確實包含一個字符串

我遇到的問題是當我在appDelegate applicationDidFinishLaunching或rootViewControllers viewDidLoad或viewDidAppear方法中初始化plist數組時。

現在在被複制到文檔dir中mainbundle plist中具有一個項是一個字符串

plist中來源不包含一個稱爲GBP封閉在這也是正確的數組節點字符串。

我初始化的plist的NSMutableArray這樣

NSString *rootPath2 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *plistPath2 = [rootPath2 stringByAppendingPathComponent:@"currency.plist"]; 
theCurrency = [[NSMutableArray alloc] initWithContentsOfFile:plistPath2]; 

而在viewDidLoad中或viewWillAppear中我檢查與數組:

NSLog(@"Array contains %@", theCurrency); 

是怎樣的結果無效?

+0

也許你可以在模擬器中試試這個,看看在plist編輯器中打開它時文檔目錄中的文件是什麼樣的? –

回答

0

假設找到該文件,plist應該是一個字典。您在plist中數組應該有一個名稱來識別它,所以你可以試試:

NSDictionary *dict = [[NSDictionary alloc]initWithContentsOfFile:plistPath2]; 
NSArray *currencyArray = [dict objectForKey:@"CurrencyArrayKey"]; 

其中「CurrencyArrayKey」是在你的plist您的陣列的關鍵。

0

將plist內容打開爲文本文件來檢查plist內容。

通過可視化編輯器創建的Plist由包含其餘元素的dict構成(如果您包含字符串或帶有字符串的數組,我不清楚)。

如果你看到一個字典,那麼你的plist將正確地反序列化到一個字典,而不是一個數組。

您也可以嘗試使用:

[NSDictionary dictionaryWithContentsOfFile:path]; 
0

其確定傢伙,我理解了它,這是我在那裏初始化數組。在我提供的viewdidload中,延遲0.1秒後執行選擇器,選擇器指向一個包含plist初始化和我在記錄數組內容時檢查的條件的方法。