Ios 通过筛选某些值,从现有字典创建新字典

Ios 通过筛选某些值,从现有字典创建新字典,ios,objective-c,Ios,Objective C,好的,这是我的问题 我正在将对象数组(Person类)添加到字典中。每个都包含全名和很少的其他属性。我通过循环生成键来创建字典 NSString -stringWithFormat:@"person%d" 为了方便起见,让我们假设我的字典看起来像 NSDictionary *dict=@{@"person1": @"Ilena Jennifer DCruz", @"person2":@"James Bond", @"person3":@"Skylark", @"person4":@"Xan X

好的,这是我的问题

我正在将对象数组(Person类)添加到字典中。每个都包含全名和很少的其他属性。我通过循环生成键来创建字典

NSString -stringWithFormat:@"person%d"
为了方便起见,让我们假设我的字典看起来像

NSDictionary *dict=@{@"person1": @"Ilena Jennifer DCruz", @"person2":@"James Bond", @"person3":@"Skylark", @"person4":@"Xan Xiaa Zuang Ming"};
现在,我需要一本每个人只有名字的字典

我怎么能有这个呢?

试试这个:

NSDictionary *dict=@{@"person1": @"Ilena Jennifer DCruz",
                     @"person2":@"James Bond",
                     @"person3":@"Skylark",
                     @"person4":@"Xan Xiaa Zuang Ming"
                     };

NSMutableDictionary *firstNameDict=[NSMutableDictionary new];
for (NSString *key in dict) {
    [firstNameDict setObject:[dict[key]componentsSeparatedByString:@" "][0]
                      forKey:key];
}
NSLog(@"->%@",firstNameDict);
输出:

->{ person1 = Ilena; person2 = James; person3 = Skylarl; person4 = Xan; } ->{ person1=冬青; person2=詹姆斯; person3=天鹰座; person4=Xan; } 试试这个:

NSDictionary *dict=@{@"person1": @"Ilena Jennifer DCruz",
                     @"person2":@"James Bond",
                     @"person3":@"Skylark",
                     @"person4":@"Xan Xiaa Zuang Ming"
                     };

NSMutableDictionary *firstNameDict=[NSMutableDictionary new];
for (NSString *key in dict) {
    [firstNameDict setObject:[dict[key]componentsSeparatedByString:@" "][0]
                      forKey:key];
}
NSLog(@"->%@",firstNameDict);
输出:

->{ person1 = Ilena; person2 = James; person3 = Skylarl; person4 = Xan; } ->{ person1=冬青; person2=詹姆斯; person3=天鹰座; person4=Xan; }
如果数据结构良好,为什么要这样做。您可以枚举整个集合,以仅获取名称。如果这个过程是重复的,考虑为人制作一个模型类。请注意,您的字典结构可以改进,如果一个人的标识符是“person1”、“person2”,您可能只需要一个数组。@Anupdas:我从JSON获得,如果您的数据结构良好,为什么要这样做。您可以枚举整个集合,以仅获取名称。如果这个过程是重复的,考虑为人制作一个模型类。请注意,您的字典结构可以改进,如果一个人的标识符是“person1”、“person2”,您可能只需要一个数组。@Anupdas:我从JSON获得