【发布时间】:2010-11-28 22:49:52
【问题描述】:
看来我在这个循环中有一个逻辑问题。我正在尝试:
- 循环 myKeys(来自 dict)以查找选定的玩家
- 为 NSMutableArray (thePlayers) 中的选定玩家设置三个 BOOL 参数(YES 或 NO)
- 使用 'thePlayers' 和 'myKeys' 更新 dict (selectedPlayerDict)
- 清空 thePlayers 并执行新的循环和相同的操作
单个玩家,当我分别选择每个玩家时,有以下参数:
selectedPlayerDict:{Hannah = (0,0,1);}
selectedPlayerDict: { AAAXXX = ( 1、 1、 1 ); }
当同时选择两者时,意味着触发 (if ([theObjects objectAtIndex:3] == [NSNumber numberWithBool:YES])),我得到以下结果
selectedPlayerDict: { AAAXXX = ( 0, 0, 1、 1、 1、 1 ); 汉娜 = ( 0, 0, 1、 1、 1、 1 ); }
对于上面的结果,我使用:
//[玩家移除所有对象]; //
当我更改并删除评论“//”时:
[玩家移除所有对象]; //
我得到以下结果:
selectedPlayerDict: { AAAXXX = ( ); 汉娜 = ( ); }
我使用的代码是:
for (NSString *myKeys in allTheKeys) {
theObjects = [playerDict valueForKey:myKeys];
if ([theObjects objectAtIndex:3] == [NSNumber numberWithBool:YES]) {
//[thePlayers addObject:myKeys];
NSLog(@"Spelare: %@ är vald", myKeys);
NSLog(@">>>><<<<");
// Check what difficulties level
if ([theObjects objectAtIndex:0] == [NSNumber numberWithBool:YES]) { //hard
NSLog(@"Player have diff HARD");
[thePlayers addObject:[NSNumber numberWithBool:YES]]; //@"YES"];
}
else {
NSLog(@"Player have NOT diff HARD");
[thePlayers addObject:[NSNumber numberWithBool:NO]]; //@"NO"];
}
if ([theObjects objectAtIndex:1] == [NSNumber numberWithBool:YES]) { //medium
NSLog(@"Player have diff MEDIUM");
[thePlayers addObject:[NSNumber numberWithBool:YES]]; //@"YES"];
}
else {
NSLog(@"Player have NOT diff MEDIUM");
[thePlayers addObject:[NSNumber numberWithBool:NO]]; //@"NO"];
}
if ([theObjects objectAtIndex:2] == [NSNumber numberWithBool:YES]) { //easy
NSLog(@"Player have diff EASY");
[thePlayers addObject:[NSNumber numberWithBool:YES]]; //@"YES"];
}
else {
NSLog(@"Player have NOT diff EASY");
[thePlayers addObject:[NSNumber numberWithBool:NO]]; //@"NO"];
}
[selectedPlayerDict setValue:thePlayers forKey:myKeys];
[thePlayers removeAllObjects]; //<<<<<<<<<<<<<<<<<<<<<<<<<<
}
}
NSLog(@"selectedPlayerDict: %@", selectedPlayerDict);
我知道我可能在逻辑上做错了,但我已经尝试了几个小时来试图理解我做错了什么。我不明白为什么 dic 的对象是空的,因为我在更新 dict 后循环末尾的数组中是“removeAllObjects”?我试过“setObject:forKey:”但没有运气。
【问题讨论】:
标签: iphone objective-c nsmutabledictionary