字典数组或多个数组,哪个最好?

时间:2011-06-23 06:16:35

标签: objective-c cocoa architecture dictionary oop

我遇到了解析xml或json的要求,并且必须在表中列出它们。

我没有遇到这个问题,但我想优化代码以减少内存资源。

问题是,最好是拥有多个数组,还是最好有一个内容为字典的单个数组。

请看下面的示例,其中3个名称以2种方式保存

方式1

NSArray* names = [NSArray arrayWithObjects:
                  [NSDictionary dictionaryWithObjectsAndKeys:
                   @"rama krishna",@"firstname",
                   @"chunduri",@"surname",
                   nil],
                  [NSDictionary dictionaryWithObjectsAndKeys:
                   @"rama krishna",@"firstname",
                   @"gutta",@"surname",
                   nil],
                  [NSDictionary dictionaryWithObjectsAndKeys:
                   @"selvakumar",@"firstname",
                   @"k",@"surname",
                   nil],
                  nil];

方式2

NSArray *firstnames=[NSArray arrayWithObjects:@"Rama Krishna",@"Rama Krishna",@"selvakumar",nil];
NSArray *surnames=[NSArray arrayWithObjects:@"chunduri",@"gutta",@"k",nil];

因此,这两种方式中的哪一种可以优先用于优化内存消耗。

2 个答案:

答案 0 :(得分:10)

您刚刚遇到了使用面向对象编程的绝佳场所。

你的字典例如,“firstname”到“rama krishna”和“surname”到“gutta”,应该真正被分组为一个带有NSString*实例变量的类,用于姓氏和名字。

E.g:

@interface Person : NSObject {
    NSString *firstname;
    NSString *surname;
}

@end

然后你将拥有一组Person个对象。在大多数情况下,更容易使用,以及“正确”的做事方式。任何触摸你代码的人都会感谢你。

答案 1 :(得分:0)

更好的选择是在数组中添加字典。即一个数组和多个字典。我在最新的申请中使用了这个:

// In a loop
NSMutableDictionary *dictError=[NSMutableDictionary dictionaryWithObjectsAndKeys:maxCount,kID,kUsers,kEntity,[Utils convertDateInString:[NSDate date]],kDate,kTrue,kStatus,kEnter,kDescription, nil];
[arrError addObject:dictError];  

通过这种方式,您可以将字典作为数组对象添加。并获得可视的对象:

NSMutableDictionary *nameDictionary = [arrError objectAtIndex:1];
NSString *strEntityName = [nameDictionary objectForKey:@"KeyName"];