Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 字典数组/如何更新特定键和索引上的值?_Iphone_Ios - Fatal编程技术网

Iphone 字典数组/如何更新特定键和索引上的值?

Iphone 字典数组/如何更新特定键和索引上的值?,iphone,ios,Iphone,Ios,我有一个字典数组,它保存在应用程序的文档目录中 如何更新特定键和索引上的值? 我想更新第二个人的名字 <?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>

我有一个字典数组,它保存在应用程序的文档目录中 如何更新特定键和索引上的值? 我想更新第二个人的名字

<?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>

人名
约翰·肖利
伊斯帕索纳达特
拟人
12541
人物画
约翰.jpg
拟人
品牌推广经理
人事部
2.
私人邮件
john@johnsculey.com
人名
克里斯西雅图
伊斯帕索纳达特
拟人
89854
人物画
chris.jpg
拟人
品牌推广经理
人事部
2.
私人邮件
chris@johnsculey.com


等等……

如果我没有弄错你的问题,我不确定。但是,如果您想知道如何在数组的特定索引处访问字典,可以这样做:

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

数组中包含什么类型的对象并不重要;它可以是数字,也可以是字典对象。您可以正常访问它们。

因此,假设您的字典是可变的,

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

(如果不是,请在动手之前创建它的可变副本。)

只需几行代码,您就可以随心所欲。。。首先从数组中获取要编辑的字典,然后更改键的值。我还没有测试过这段代码,但它应该工作得很好

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"];
我的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";

是不是
[[array objectAtIndex:1]setObject:@“New Name”forKey:@“personName”]足够好吗?是的,它足够好:)谢谢,是的,但我假设它是一本可变字典,我只是打错了,因为我是在iPad上回答的,它不太舒服。。。对不起!