2011-10-14 54 views
2

我試着做以下幾點:如何添加NSArray作爲NSMutableDictionary的一個NSMutableDictionary鍵?

NSMutableArray *myArr = [NSMutableArray arrayWithArray:[myDict objectForKey:@"myKey"]]; 
[myArr addObject:@"New string xxx"]; 
[myDict setObject:myArr forKey:@"myKey"]; 
// Write to file (done successfully) 

正如你所看到的,我得到被存儲在與鍵@"myKey"一個plist中的數組,一些對象添加到它,並希望重新錄製的plist中,當然還有一些額外的價值。

問題是,會發生以下情況在我的plist:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$ 
<plist version="1.0"> 
<dict> 
     <key>myKey</key> 
     <array> 
       <string>First entry on the plist</string> 

       <array> 
        <string>First entry on the plist</string> 
        <string>New string xxx</string> 
       </array> 
     </array> 
</dict> 
</plist> 

所需的輸出,當然是:

<?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$ 
    <plist version="1.0"> 
    <dict> 
      <key>myKey</key> 
      <array> 
        <string>First entry on the plist</string> 
        <string>New string xxx</string> 
      </array> 
    </dict> 
    </plist> 
+0

兩兩件事:1.一個的NSLog(@ 「myDict:%@」,myDict);將顯示字典而無需編寫它。 2.仔細想想每個陳述都在做什麼。將複合語句分解爲多個語句,每個語句都做一件事。一個例子是做兩件事的第一條語句,訪問字典的內容並初始化一個數組。這將使得理解發生的事情變得容易或者明確表明一個陳述不被理解。 – zaph

+0

發佈代碼似乎沒有問題。在您發佈的代碼執行之前,'myDict'是否處於預期狀態,並且在它之後處於意外狀態? –

回答

0

您是否嘗試過重新設置之前調用[myDict removeObjectForKey:@"myKey"]

0

其工作細

NSMutableArray *myArr = [NSMutableArray arrayWithArray:[myDict objectForKey:@"myKey"]]; 
[myArr addObject:@"New string xxx"]; 
[myDict setObject:myArr forKey:@"myKey"]; 
[myDict writeToFile:@"/path/p.text" atomically:NO]; 
[myArr addObject:@"new object"]; 
[myDict setObject:myArr forKey:@"myKey"]; 
[myDict writeToFile:@"/path/p.text" atomically:NO]; 

輸出:

<?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>myKey</key> 
    <array> 
     <string>New string xxx</string> 
     <string>new object</string> 
    </array> 
</dict> 
</plist> 
相關問題