2013-07-30 92 views
-1

我想使用Plist填充我的數組。這是我的plist文件Menu.plist。無法使用plist填充數組

-Item 0,類型:詞典,值(1項) - 標題,字符串,聯繫人

-Item 1,類型:詞典,值(1項) - 標題,串,編輯

- (void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Menu" ofType:@"plist"]; 
     self.menuArray = [NSMutableArray arrayWithContentsOfFile:plistPath]; 


    } 

我試圖填充細胞接觸和編輯,但我menuArray是沒有得到加載我的表視圖,我的NSLog檢查和* plist中越來越路徑,但在self.menuArray其仍顯示0對象,而應該是2.我以前做過這個,它工作得很好,我不知道有什麼今天出錯了。有什麼建議麼???

+0

如果你看看你的plist文件,它應該是的NSDictionary不是NSArray的 – Injectios

+0

顯示實際的plist文本,並檢查它添加到目標(所以複製到應用程序)。 – Wain

+1

你可以將內容粘貼到plist中嗎? – Tendulkar

回答

3

根據你的問題的plist內容如下

Plist created through XCode

NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:plistPath]; 

如果該字典的一些對象數組,你可以通過把它

XML格式

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<array> 
    <dict> 
     <key>Title</key> 
     <string>Contact</string> 
    </dict> 
    <dict> 
     <key>Title</key> 
     <string>Edit</string> 
    </dict> 
</array> 
</plist> 

如果是這樣的話請嘗試以下

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Menu" ofType:@"plist"]; 
NSArray *menuDataArray = [NSMutableArray arrayWithContentsOfFile:plistPath]; 

NSLog(@"Plist Content Array = %@", menuDataArray); 

輸出

Plist Content Array = (
     { 
     Title = Contact; 
    }, 
     { 
     Title = Edit; 
    } 
) 

注:

  • 請檢查您的plist結構。
  • Array alloc-init。
0

試試這個

- (void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     self.menuArray=[[NSMutableArray alloc]init]; 
     NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Menu" ofType:@"plist"]; 
     self.menuArray = [NSMutableArray arrayWithContentsOfFile:plistPath]; 


    } 

你必須ALLOC的NSMutableArray。

+0

嘗試分配alloc NSMutableArray,但沒有工作,menuArray.count仍然返回0個對象。我檢查了一箇舊程序,並且相同的代碼在那裏工作正常,沒有使用ARC,這個項目使用ARC,它會有什麼區別,如果有的話,我應該做些什麼改變? – Gamerlegend

0

你能粘貼你的plist文件的內容嗎? 如果你想創建的plist陣列,那麼就應該是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<array> 
    <string>Brand A</string> 
    <string>Brand B</string> 
    <string>Brand C</string> 
    <string>Brand D</string> 
</array> 
</plist> 

在你的情況,你可能嘗試從基於字典的plist生成的NSArray。而且你應該使用:

NSArray *array = [dict objectForKey:@"KeyForSomeArray"];