我需要一个Cocoa数据结构来保存一段时间内一组昆虫的位置列表。显然,NSDictionary
必须有唯一的密钥,因此我无法将昆虫用作密钥,MKUserlocation
作为对象。
除NSArray
之外是否还有其他课程,其中一个人无需逐步完成,if
/ else
- 在每个索引处?
在各种各样的地方似乎都有NSList
这样的事情,但Apple文档中没有任何内容。
我还看到NSIndexSet
与NSArray
一起使用的引用,但再次阅读Apple文档表明它对我没用。
答案 0 :(得分:4)
由于Cocoa框架不提供multimap容器,您可以通过创建NSMutableDictionary
并使用NSMutableArray
对象填充它来实现自己的容器。
NSMutableDictionary locByInsect = [NSMutableDictionary dictionary];
// Adding a location for an insect:
MyInsect *insect = ... // Don't forget to provide hash code and equality checks
MyLocation *location = ...
NSMutableDictionary *insectLocations = locByInsect[insect];
if (insectLocations == nil) {
insectLocations = [NSMutableArray array];
locByInsect[insect] = insectLocations;
}
[insectLocations addObject:location];
// Retrieving all locations for an insect
for (MyLocation *loc in locByInsect[insect]) {
NSLog(@"Saw %@ at %@", insect, loc);
}
答案 1 :(得分:2)
每只昆虫都有NSMutableDictionary
的钥匙。将每个密钥的对象设为NSMutableArray
个位置。