加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – NSMutableDictionary将多个对象添加到一个键

发布时间:2020-12-16 05:03:45 所属栏目:百科 来源:网络整理
导读:如何在NSMutableDictionary中向同一个键添加多个对象? 我找不到合适的方法. setObject方法仅更新密钥数组中的单个对象.方法addObject:forkey:在NSMutableDictionary中不可用,并在使用时导致崩溃. 从plist文件中读取字典. 词典: temp = { nickname : scor
如何在NSMutableDictionary中向同一个键添加多个对象?
我找不到合适的方法. setObject方法仅更新密钥数组中的单个对象.方法addObject:forkey:在NSMutableDictionary中不可用,并在使用时导致崩溃.

从plist文件中读取字典.

词典:

temp = {
    nickname : score 
        item 0 = level1;
        item 1 = level2;
        item 3 = level3;
    score 
        item 0 = 400;
        item 1 = 400;
        item 3 = 400;
}

这是代码:

NSMutableDictionary *newDict = [[NSMutableDictionary alloc] init];
str_nickname = [temp objectForKey:@"nickname"];
for (NSString *key in str_nickname){
    if ([key isEqualToString:@"level2"]) {  //replace object with new name
        [newDict setObject:@"new level" forKey:@"nickname"];
    } else {
        [newDict addObject:key forKey:@"nickname"];   //wont work!!!
    }
}

另外,我想更新新词典中的新分数,并且必须在相应的级别对象上更新,也许是通过索引?

解决方法

如果你的plist文件是这样的“test.plist”
The Dictionary temp={
    nickname : Junaid Sidhu

    levels 
             item 0 = level1;
             item 1 = level2;
             item 3 = level3;
    score 
             item 0 = 400;
             item 1 = 400;
             item 3 = 400;
    }

这是代码

NSDictionary *temp = [[NSDictionary alloc]initWithContentsOfFile:[NSBundle mainBundle] pathForResource:@"test" ofType:@"plist"]];

NSMutableDictionary *newDict = [[NSMutableDictionary alloc] init];

NSString *str_nickname = [temp objectForKey:@"nickname"];
NSMutableArray *levels = [NSMutableArray new];
NSMutableArray *score =  [NSMutableArray new];

for (NSString *key in [temp allKeys]){

    if ( [key isEqualToString:@"levels"]) {  //replace object with new name

           levels = [NSMutableArray arrayWithArray:(NSArray *)[temp objectForKey:key]];

    }
    else if ( [key isEqualToString:@"score"]){

           score = [NSMutableArray arrayWithArray:(NSArray *)[temp objectForKey:key]];

    }
}

NSLog(@"Nick : %@ n levels : %@ n score : %@ n",str_nickname,levels,score)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读