2011-04-24 72 views
1

我試圖從plist創建一個NSArray,但由於某種原因數組永遠不會被初始化。從plist創建NSArray

繼承人的代碼 -

NSString * path = [[NSBundle mainBundle] pathForResource:@"defaultWorkouts2" ofType:@"plist"]; 

    NSLog(@" ------ %@", path); 

    NSArray * defaultWorkouts = [[NSArray alloc] initWithContentsOfFile:path]; 

    NSLog(@" ------ %@", defaultWorkouts); 

繼承人的控制檯輸出 -

2011-04-24 16:17:26.732 IntervalTimer[9778:207] ------ file://localhost/Users/darrenfindlay/Library/Application%20Support/iPhone%20Simulator/4.3/Applications/8FAC4993-D1BA-460F-9A56-8A6984CB8AB6/IntervalTimer.app/defaultWorkouts.plist 2011-04-24 16:17:26.733 IntervalTimer[9778:207] ------ (null))

這裏是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"> 
<dict> 
    <key>Boxing</key> 
    <array> 
     <integer>8</integer> 
     <string>Sparring</string> 
     <array> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
     </array> 
     <array> 
      <string>Round 1</string> 
      <string>Rest, Round 2 next</string> 
      <string>Round 2</string> 
      <string>Rest, Round 3 next</string> 
      <string>Round 3</string> 
      <string>Rest, Round 4 next</string> 
      <string>Round 4</string> 
      <string>Rest, Round 5 next</string> 
      <string>Round 5</string> 
      <string>Rest, Round 6 next</string> 
      <string>Round 6</string> 
      <string>Rest, Round 7 next</string> 
      <string>Round 7</string> 
      <string>Rest, Round 8 next</string> 
      <string>Round 8</string> 
     </array> 
    </array> 
    <key>Boxing - 2</key> 
    <array> 
     <integer>8</integer> 
     <string>Sparring</string> 
     <array> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
     </array> 
     <array> 
      <string>Round 1</string> 
      <string>Rest, Round 2 next</string> 
      <string>Round 2</string> 
      <string>Rest, Round 3 next</string> 
      <string>Round 3</string> 
      <string>Rest, Round 4 next</string> 
      <string>Round 4</string> 
      <string>Rest, Round 5 next</string> 
      <string>Round 5</string> 
      <string>Rest, Round 6 next</string> 
      <string>Round 6</string> 
      <string>Rest, Round 7 next</string> 
      <string>Round 7</string> 
      <string>Rest, Round 8 next</string> 
      <string>Round 8</string> 
     </array> 
    </array> 
    <key>Boxing - 3</key> 
    <array> 
     <integer>8</integer> 
     <string>Sparring</string> 
     <array> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
      <integer>60</integer> 
      <integer>150</integer> 
     </array> 
     <array> 
      <string>Round 1</string> 
      <string>Rest, Round 2 next</string> 
      <string>Round 2</string> 
      <string>Rest, Round 3 next</string> 
      <string>Round 3</string> 
      <string>Rest, Round 4 next</string> 
      <string>Round 4</string> 
      <string>Rest, Round 5 next</string> 
      <string>Round 5</string> 
      <string>Rest, Round 6 next</string> 
      <string>Round 6</string> 
      <string>Rest, Round 7 next</string> 
      <string>Round 7</string> 
      <string>Rest, Round 8 next</string> 
      <string>Round 8</string> 
     </array> 
    </array> 
</dict> 
</plist> 

在此先感謝您的幫助,這正在讓我發瘋。

+1

你應該使用' - [一個NSBundle URLForResource:ofType:]'和' - [NSArray的initWithContentsOfURL:]'蘋果建議。 – 2011-04-24 15:05:08

+1

顯示你的plist文件。它看起來像這個文件不包含有效的數組表示形式。 – 2011-04-24 15:08:26

+0

感謝您的回覆,我嘗試過,但仍然沒有運氣,我得到了完全相同的輸出 – 2011-04-24 15:10:48

回答

3

如果你看看你的plist文件,它將持有NSDictionary而不是NSArray。您應該將實現更改爲:

NSDictionary * defaultWorkouts = [[NSDictionary alloc] initWithContentsOfFile:path]; 
+0

哇,謝謝,我不能相信我錯過了!謝謝! – 2011-04-24 15:21:18