【发布时间】:2010-08-06 21:16:43
【问题描述】:
这有点复杂。
我创建了一个名为 pointsOfInterest 的数组 (NSArray)。
这个数组的元素是 NSDictionary 对象。每个字典都有两个键,“headerTitle”和“rowObjects”。 “headerTitle”的值是一个简单的 NSString; “rowObjects”的对象是另一个 NSArray 对象;其中每一个都是一个自定义类。
请看下面的代码。
for (NSDictionary *dict in pointsOfInterest) {
NSArray *keys = [dict allKeys];
for (NSString *key in keys) {
//NSLog(@"Key %@",key);
}
NSString *category = [dict valueForKey:@"headerTitle"];
[poiCategories addObject:category];
}
所以,我正在枚举数组,将单个字典对象放入 dict。然后我遍历它的所有键 - 如果我取消注释 NSLog 行,它将显示如下内容:
2010-08-06 14:00:17.236 TourGuide[4479:207] Key headerTitle
2010-08-06 14:00:17.237 TourGuide[4479:207] Key rowObjects
2010-08-06 14:00:17.238 TourGuide[4479:207] Key headerTitle
2010-08-06 14:00:17.239 TourGuide[4479:207] Key rowObjects
然后它构造一个新的平面数组,其中包含所有“headerTitle”键的值。
首先,我很清楚我应该能够做到这一点:
poiCategories = [[pointsOfInterest valueForKey:@"headerTitle"] retain]
并获取各种“headerTitle”键的值。但是,这样做会使应用程序崩溃。奇怪的是,上面的 for 构造工作正常……如果我留在内部 for 循环中。如果我删除那个 for 循环,以及它无用的 NSLog,只留下这个:
for (NSDictionary *dict in pointsOfInterest) {
NSString *category = [dict valueForKey:@"headerTitle"];
[poiCategories addObject:category];
}
然后它崩溃了。它不会因我能找到的任何类型的可捕获错误而使我感到高兴。
任何人都可以想到的任何原因?
【问题讨论】:
标签: iphone objective-c