多维数据对象

时间:2011-08-21 03:32:36

标签: objective-c nsarray nsdictionary

我正在决定在我的应用中组织数据的最佳方式。我正在尝试决定是否需要关注使用NSArrayNSDictionary进行数据组织的几种不同样式的内存和处理要求,以及哪些方法会更好。

考虑这个例子:

您拥有个人信息的有序列表以及与每个人相关的信息。因某些与此无关的任意原因而订购。

订购的清单是NSArray。你有两种选择,就像我看到的那样:

  • 使用NSDictionaries填充此数组。每个词典里面都是那个单身人士的信息。 I.E. “姓名”,“地址”,“电子邮件”或任何您想要的密钥。
  • 或者,您的NSArray只包含一个唯一标识符列表NSString s(一组键)。然后,每个信息项都有单独的NSDictionaries,例如一个用于“电子邮件地址”的字典,另一个用于“名称”等的字典,对于每个字典,您的唯一标识符是字典键。

除了这两种方案之外,还有更“优雅”的解决方案吗?对于应用程序的运行时需求,它们是否会优于另一种解决方案?

我来自PHP背景,创建多维数组非常简单直观,您可以在其中执行以下简单操作:

echo "The second person's name is ".$person[2][name];

找出目标C中的最佳实践对我来说有点挑战。

1 个答案:

答案 0 :(得分:0)

你的第二个建议(单独的词典)对我来说似乎非常不直观。另外,您最终会发现两个选项之间的内存使用量存在很大差异。一系列字典很好。

我建议的另一种选择是实际拥有一个类,例如:

@interface Person : NSObject
@property (copy) NSString *name;
@property (copy) NSString *address;
@property (copy) NSString *email;
@end

这可能比使用字典更有效,因为每个Person对象都具有这三个字段所需的存储空间。