iPhone:数据结构选择

时间:2009-10-07 03:41:08

标签: iphone data-structures

我需要跟踪一堆可以通过两个键识别的对象(实际上是纬度和经度,但还有一些其他属性)。我需要做一些事情,比如用这两个键搜索一个特定的对象,如果它在那里就更新它,如果没有则插入。我刚在想。我在看NSDictionary和NSSet,但我想我会听到群众不得不说的话。

3 个答案:

答案 0 :(得分:4)

我想更简单的方法是使用NSDictionary。您只需执行[dic objectForKey:key]即可获得数据。

另外,一个好的做法是为键创建一些定义,这样可以更容易地更改键名,并避免拼写错误:

#define kObjectLatitude @"Latitude"
#define kObjectLongitude @"Longitude"

[object setObject:lat forKey:kObjectLatitude];
[object setObject:lon forKey:kObjectLongitude];

不要忘记在智能的地方编写定义。如果只在一个类中使用它,只需将它们写在声明的顶部即可。但是,如果您需要通过代码的不同部分,则可以考虑将其移动到主类的头文件或定义的特定头文件中:)

在这种情况下,

NS(Mutable)Set对你没用。 NSSets是数学集合,你不能用特定的密钥访问特定的数据(也就是说,你不能问一套:“嘿,给我经度,你存储它的地方!”)

答案 1 :(得分:3)

这不是一个直接的答案,而是一句警告。纬度和经度是CLLocationDegrees,它是一个双精度浮点值。由于浮点数学是不精确的,因此测试浮点数上的相等性是一个冒险的命题。您可以轻松地在理论上应该相等的两个浮点上进行相等测试失败。我不知道你的应用程序的要求,但你可能想测试接近度而不是相等。

答案 2 :(得分:2)

使用NSDictionary。这就是它的意思。