2010-04-30 47 views
0

我想要一个自定义类对象来保存数据,并且不知何故,创建大约80个属性并不是最好的方式。类属性vs NSArray/NSDictionary

大部分属性都是布尔值,所以我想创建数组(键/值)或(可能更好)附加到对象的NSDictionary用于保存数据。这是有道理的,还是我应该留下的财产?

额外:对于不同的方法是否有一般优点和缺点?以及我需要寻找哪些关键字/概念来寻找关于某种常见问题的讨论?

在此先感谢

回答

3

如果您期望某些行为,您应该使用类来创建对象(在将来的程序中)。我的意思是,对象 - 不仅仅是存储变量的东西。它也假设某种活动(称为行为)。属性不仅是设置某些值的方式(作为对象的特性),还有影响这种行为的方式(除了保存数据 - 一些检查或smth.else外,您可以添加额外的代码部分)。

如果你只需要构造来存储数据 - 这不仅仅是更好,这是一个更合乎逻辑的步骤来将它们存储为数组或字典。

字典在大多数情况下更好,因为您可以通过键名访问存储的值。而你的代码将会更容易理解。但数组应该是(我不知道确切地说,只是假设)更快地访问(在其他字符串中找到字符串键比在递增数字序列中的索引更难找到)。

+0

实际上,我只需要该数据对象来设置和保存数据。所以,当我明白你的权利,我根本不需要一个自定义数据对象,但应该直接使用NSDictionary对象呢? – 2010-04-30 11:56:03

+0

关于使用80多个变量......我认为,Alex Reynolds的建议(下面)是最好的 - 你应该尝试将类似的数据分组来创建子集。 如果你的数据真的很“简单”(如bool,int或float值 - 没有硬内存管理),你也可以使用结构(C-structs)。优点:良好的内存使用(没有额外的内存用于保存密钥或其他内容),代码完成(打字时)和编译器时间检查。 – kpower 2010-05-04 08:07:52

+0

+1好答案。 – 2010-06-22 03:12:49

1

我同意你好得多使用对象来保存这些值。它会让你的代码更清晰阅读/理解。我会去使用NSDictionary而不是数组,因为你可以通过名字访问每个布尔值。一个数组意味着你必须通过索引来访问元素,这使得代码难以理解。

2

NSArrayNSArray在索引容器中存储基础对象(基数NS类型对象,如NSNumberNSString等)。 NSArray没有键值对。您将使用NSDictionary将键值对中的Foundation对象存储起来。

80的东西很多。你可以将它们分组为子集?这可能会使该数据集的维护更易于管理。