2013-01-01 120 views
0

我有一個字典數組,它保存在應用程序的文檔目錄中 如何更新特定鍵和索引的值? 例如:我要更新第二詞典人的名字字典數組/如何更新特定鍵和索引的值?

<?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>personName</key> 
      <string>John Sculey</string> 
      <key>isPersonAdult</key> 
      <true/> 
      <key>personID</key> 
      <integer>12541</integer> 
      <key>personPicture</key> 
      <string>john.jpg</string> 
      <key>personDesignation</key> 
      <string>Branding Manager</string> 
      <key>personDepartment</key> 
      <integer>2</integer> 
      <key>personEmail</key> 
      <string>[email protected]</string> 
    </dict> 
    <dict> 
      <key>personName</key> 
      <string>Chris Seattle</string> 
      <key>isPersonAdult</key> 
      <true/> 
      <key>personID</key> 
      <integer>89854</integer> 
      <key>personPicture</key> 
      <string>chris.jpg</string> 
      <key>personDesignation</key> 
      <string>Branding Manager</string> 
      <key>personDepartment</key> 
      <integer>2</integer> 
      <key>personEmail</key> 
      <string>[email protected]</string> 
    </dict> 

等等....

+2

是不是'[陣列objectAtIndex:1]的setObject:@ 「新名稱」 forKey:@ 「PERSONNAME」];'不夠好? – 2013-01-01 22:33:05

+0

是的,這是足夠好:)謝謝 – yusufag

回答

0

不知道,如果我得到你的問題是正確的。但是,如果你問,你怎麼可以查閱字典在陣列的具體指標,這將是這樣:

NSMutableDictionary *person = [NSMutableDictionary dictionaryWithDictionary:[array objectAtIndex:1]]; 
[person setValue:@"Chris Washington" forKey:@"personName"]; 

不要緊,什麼樣的數組中存放的對象;它可以是數字或 - 與你的情況 - 字典對象。你照常訪問它們。

1

所以,假設你的字典是可變的,

[[array objectAtIndex:1] setObject:@"New Name" forKey:@"personName"]; 

(如果不是,創建一個可變副本它beforehands。)

-1

你可以做你想做一個什麼數代碼行...首先,您要從數組中獲取要編輯的字典,然後更改密鑰的值。我沒有測試過這個代碼,但它應該工作得很好!

NSURL *documents = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
NSURL *plistUrl = [documents URLByAppendingPathComponent:@"yourPlistName.plist"]; 
NSArray *plistContents = [NSArray arrayWithContentsOfURL:plistUrl]; 
NSMutableDictionary *personToEdit = [plistContents objectAtIndex:1]; 
[personToEdit setValue:@"value you want to set" forKey:@"your key"]; 
+0

將不會工作,而不是一個可變的字典 –

+0

是的,但我認爲這是一個可變的字典,我只輸入錯誤,因爲我從iPad回答,它不是很舒適。 ..對不起! – matteodv

+0

沒有。 arrayWithContentsOfURL會給你不可變的東西 –

0

我的2美分太:d

id data = [NSData dataWithContentsOfFile:plistFile]; 
NSArray *plist = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListMutableContainersAndLeaves format:nil error:nil]; 
assert([plist isKindOfClass:[NSArray class]]); 

//every element in the array is mutable 
NSMutableDictionary *dict = plist[1]; 
dict[@"key"] = @"value"; 
相關問題