我需要跟踪一堆可以通过两个键(实际上是经度和纬度,但还有其他一些属性)标识的对象。我需要做这样的事情,如通过这两个键搜索特定的对象,如果它存在则更新它,如果不存在则插入。我刚在想。我在看NSDictionary和NSSet,但认为我会听到群众不得不说的。iPhone:数据结构选择
0
A
回答
4
我想简单的方法是使用NSDictionary
。您只需执行[dic objectForKey:key]
即可获取您的数据。
此外,一个好的做法是创建密钥的一些定义,所以它更容易改变的项名称,也避免错字:
#define kObjectLatitude @"Latitude"
#define kObjectLongitude @"Longitude"
[object setObject:lat forKey:kObjectLatitude];
[object setObject:lon forKey:kObjectLongitude];
不要忘了写在了定义聪明的地方。如果仅在一个类中使用它,只需将它们写在声明的顶部。但是,如果您需要通过代码的不同部分来使用它们,则可以考虑将其移动到主类的头文件或用于定义的特定头文件:)
NS(可变)集将无用为你在这种情况下。 NSSets是数学集,你不能用特定的键访问特定的数据(也就是说,你不能问一个集合:“嘿,给我的经度,你永远保存它!”)
2
使用NSDictionary 。这就是它的意思。
3
这不是一个直接的答案,而是一个警告词。经度和纬度是CLLocationDegrees,它是一个双精度浮点值。由于浮点数学是不精确的,因此测试浮点数的平等是一个有风险的命题。您可以轻松地在两个理论上相同的浮点上进行平等测试。我不知道你的应用程序的要求,但你可能想要测试接近度而不是平等。
相关问题
- 1. 选择数据结构
- 2. 数据结构的选择
- 3. 选择表内数据库结构
- 4. [数据结构]:选择一个数据结构来构建一个图表
- 5. iPhone树型数据结构
- 6. 为类似的数据结构选择MongoDB集合结构
- 7. 除了结构化XML数据之外,还选择行数据
- 8. 根据相关结构在python结构中选择记录
- 9. 重新选择选择器结构
- 10. 从Javascript嵌套数组/数据结构选择随机项目
- 11. 在iPhone上创建XML数据结构
- 12. 从数组中选择随机结构
- 13. 结构的选择排序
- 14. iPhone上的钛行数据选择
- 15. 选择在VB.NET的数据结构并执行比较
- 16. 通用性但安全性选择哪种数据结构?
- 17. 用QPair和QString选择合适的数据结构
- 18. 如何使用多个值选择EAV结构数据
- 19. Mysql - 数据库选择与几个连接和表结构
- 20. 选择所有用户定义的数据类型/结构
- 21. 如何选择F#中的数据结构?
- 22. 通过选择另一个数据结构来优化代码
- 23. SQL在创建索引期间选择数据结构?
- 24. 选择合适的数据结构解析文件
- 25. 为数据库选择合适的结构
- 26. 选择正确的数据结构enum/struct/class?
- 27. 数据结构,我应该选择哪一个,为什么
- 28. mysql从两个表中选择数据和不同的结构
- 29. 指导选择数据库结构/引擎
- 30. 为文件存储选择最佳数据结构
好评,谢谢。在涉及花车的数学运算时,我一定被咬过。我已经把他们四舍五入到几个有效数字,并且似乎到目前为止工作。将注意这一点。 – Codezy 2009-10-07 05:01:11