【发布时间】:2011-12-08 18:34:14
【问题描述】:
我需要从 NSMutableArray 中提取一个 NSDictionary,并从该字典中提取一个对象。 代码应该很简单,但我在 NSDictionary 声明中一直出现 SIGABRT 错误。
-(void)calcolaConto {
conto = [[NSNumber alloc] initWithDouble:0];
for (int i=0; [shoppingListItems count]; ++i) {
NSDictionary *dictVar = (NSDictionary *) [shoppingListItems objectAtIndex:i]; //<-- SIGABRT
NSNumber *IO = (NSNumber *) [dictVar objectForKey:@"incout"];
NSNumber *priceValue = (NSNumber *) [dictVar objectForKey:@"price"];
if ([IO isEqualToNumber:[NSNumber numberWithInt:0]]) {
conto = [NSNumber numberWithDouble:([conto doubleValue] + [priceValue doubleValue])];
} else if ([IO isEqualToNumber:[NSNumber numberWithInt:1]]) {
conto = [NSNumber numberWithDouble:([conto doubleValue] - [priceValue doubleValue])];
}
NSLog(@"Valore %@", conto);
}
}
“shoppingListItems”是这样创建的:
NSMutableDictionary *rowDict = [[NSMutableDictionary alloc] initWithCapacity:6];
[rowDict setObject:primaryKeyValue forKey: ID];
[rowDict setObject:itemValue forKey: ITEM];
[rowDict setObject:priceValue forKey: PRICE];
[rowDict setObject:groupValue forKey: GROUP_ID];
[rowDict setObject:incOut forKey:INC_OUT];
[rowDict setObject:dateValue forKey: DATE_ADDED];
[shoppingListItems addObject: rowDict];
【问题讨论】:
-
数组的内容怎么看?您正在使用 ++i 循环,这可能意味着第 0 个元素将被跳过,并且在进行最后一次迭代时,您将超出数组的范围。
标签: objective-c ios nsmutablearray nsdictionary sigabrt