适用于坐标的NSDictionary键的正确格式

时间:2014-10-04 22:04:34

标签: ios objective-c nsdictionary

我有NSDictionary需要存储特定x / y坐标的对象。因为这适用于iOS(同时使用cocos2d和box2d),我必须处理存储为CGPointb2Vec2的不同坐标集 - 但我需要能够正确使用的东西作为字典的关键。

我见过的一个例子是将坐标合并为一个NSString,但这对我来说似乎效率很低。我把它作为一种临时措施,当然,我看到了糟糕的表现。

NSString *coordKey = [NSString stringWithFormat:@"%f%f", coord.x, coord.y];

我可以编写自定义NSCopying对象来保存坐标,但我想知道这是否真的是最好的方式...

  • 我可以使用现有的对象吗?
  • 自定义对象比哑字符串格式化方法
  • 要好得多
  • 有什么方法可以使用现有的b2Vec2坐标格式,我已经有了一些数据吗?

1 个答案:

答案 0 :(得分:0)

如果您定义一个包含float32 x, y的坐标类,实现NSCopying协议并实现良好的hash方法,我希望它能够正常工作。

但是,只有在完全相同的(x,y)坐标查询时,此哈希表才会检索对象。依赖于浮点相等并不是一种好的做法,尽管如果查找键来自枚举已知值的列表而不是进行一些计算,它可能会起作用。

考虑使用quadtree。这是一棵树,通过递归细分为4个象限来组织其内容。