是否可以向NSDictionary添加具有重复键的值?

时间:2012-12-04 22:24:30

标签: ios nsmutablearray nsmutabledictionary

我有这样的事情:

@interface Person : NSObject
{
  NSString *fname;
  NSString *lname;
}

NSString *keys = @"a","a","b","b","b"....";
for(NSString *key in keys)
{
    Person *newPerson; //alloc new person
    [myMutableDictionary setValue:newPerson forKey:key];
}

上面的代码将使用相同的键覆盖该值,因为NSDictionary不允许重复键。我怎样才能做到这一点? 我可以通过NSMutableArray执行上面的代码,如[array addObject:newPerson];但与NSDictionary相比,获取(Key,value)需要更长的时间?我的数据是大约400,000项,有关如何有效地做到这一点的任何想法?我需要加载一次并对其进行多次提取 - 没有coreData,我试过它,它很慢。

1 个答案:

答案 0 :(得分:3)

如果您使用NSMutableArray作为键,则可以为同一个键添加多个Person个对象。

NSString *keys = @"a","a","b","b","b", ...;
for(NSString *key in keys)
{
    Person *newPerson; //alloc new person
    NSMutableArray *people;
    if(!(people = [myMutableDictionary objectForKey:key]))
    {
        people = [NSMutableArray array];
        [myMutableDictionary setValue:people forKey:key];
    }

    [people addObject:newPerson];
}
相关问题