我有这样的事情:
@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,我试过它,它很慢。
答案 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];
}