0

辞書の配列があり、アプリのドキュメントディレクトリに保存されています。特定のキーとインデックスの値を更新するにはどうすればよいですか?例:2番目の辞書の人の名前を更新したい

<?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>john@johnsculey.com</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>chris@johnsculey.com</string>
    </dict>

等々....

4

4 に答える 4

1

したがって、辞書が変更可能であると仮定すると、

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

(そうでない場合は、事前に変更可能なコピーを作成してください。)

于 2013-01-01T22:52:03.097 に答える
0

あなたの質問が正しければ、わかりません。しかし、配列の特定のインデックスで辞書にアクセスする方法を尋ねている場合は、次のようになります。

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

配列が保持するオブジェクトの種類は関係ありません。数字、または-あなたの場合のように-辞書オブジェクトにすることができます。通常どおりアクセスします。

于 2013-01-01T22:42:30.730 に答える
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";
于 2013-01-01T23:03:49.007 に答える
-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"];
于 2013-01-01T22:57:10.057 に答える