我有一个uinavigationcontroller,它包含一个要加载一些数据的tableview。
我有一个字典plist,它包含每一条列车线的字典,而每一个车站的字典又包含相关信息和一个字符串行名。我需要收集station names键并将它们添加到数组中以填充我的表(这正在工作)。
行名作为字符串存储在“我的行”字典中,键为“行名”
Root->|
|
|->TrainLine1(Dictionary)->|
| |-> lineName (String)
| |-> Station1 (Dictionary)
| |-> Station2 (Dictionary)
|
|
|->TrainLine2(Dictionary)->|
| |-> lineName (String)
| |-> Station1 (Dictionary)
| |-> Station2 (Dictionary)
我是不是走错了路?我应该重组我的公司吗?
下面的代码使应用程序崩溃。
- (void)viewDidLoad {
NSString *path = [[NSBundle mainBundle] pathForResource:@"lineDetails" ofType:@"plist"];
NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:path];
NSDictionary *lineDictionary = [[NSDictionary alloc] initWithDictionary:[dictionary objectForKey:stationNameKey]];
NSMutableArray *stationsOnLine = [[NSArray alloc] init];
NSString *key;
for (key in lineDictionary) {
NSLog(@"Adding this in array:%@", key);
//NSString *key2;
NSString *nameToTry = [NSString stringWithString:key];
NSLog(@"nameToTry : %@", nameToTry);
//NSMutableDictionary *stationDictionary = [[NSDictionary alloc] init];
if (![key isEqualToString: @"lineName"])
{
//NSMutableDictionary *stationDictionary = [[NSDictionary alloc] init];
// NSLog(@"Yes");
//NSMutableDictionary *tempDict = [[NSDictionary alloc] initWithDictionary:[lineDictionary objectForKey:key]];
NSMutableDictionary *stationDictionary = [[NSDictionary alloc] initWithDictionary:[lineDictionary objectForKey:key]];
//stationDictionary = tempDict;
NSLog(@"Object for key-- %@",[stationDictionary objectForKey:kStationName]);
[stationsOnLine addObject:[stationDictionary objectForKey:kStationName]];
[stationDictionary release];
//[tempDict release];
}
/*
for (key2 in stationDictionary)
{
NSLog(@"Adding this in station array:%@", key);
}
*/
}
stationNames = stationsOnLine;
//[stationDictionary release];
[stationsOnLine release];
[lineDictionary release];
[dictionary release];
}
调试器控制台输出:
2010-03-31 00:42:39.842 AMT_Schedule[8395:207] did SelectRow Array contents:deux-montagnes
2010-03-31 00:42:39.844 AMT_Schedule[8395:207] Adding this in array:sunnybrooke
2010-03-31 00:42:39.844 AMT_Schedule[8395:207] nameToTry : sunnybrooke
2010-03-31 00:42:39.845 AMT_Schedule[8395:207] Object for key-- Sunnybrooke
2010-03-31 00:42:39.846 AMT_Schedule[8395:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '*** -[NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
2010-03-31 00:42:39.847 AMT_Schedule[8395:207] Stack: (
29320283,
2521638153,
29404219,
29404058,
107345,
107124,
17393,
3270466,
3263806,
3306080,
3302106,
3308563,
3289798,
3310951,
3289447,
15819,
3066438,
3049604,
303530,
29104832,
29101128,
37410325,
37410522,
2793391,
8628,
8482
)