Кажется, у меня есть логическая проблема в этом цикле. Я пытаюсь:
- Looping myKeys (из dict), чтобы найти выбранных игроков
- Установка трех параметров BOOL для выбранных игроков (ДА или НЕТ) в NSMutableArray (thePlayers)
- Обновление dict (selectedPlayerDict) с помощью 'thePlayers' и 'myKeys'
- Очистить thePlayers и сделать новый цикл и то же самое
Отдельные игроки, когда я выбираю каждого игрока отдельно, имеют следующие параметры:
selectedPlayerDict: {Hannah = (0,0,1);}
selectedPlayerDict: {
AAAXXX = (
1,
1,
1
);
}
Когда выбрано и то, и другое, что означает включение (если ([theObjects objectAtIndex: 3] == [NSNumber numberWithBool: YES])), я получаю следующий результат с
selectedPlayerDict: {
AAAXXX = (
0,
0,
1,
1,
1,
1
);
Ханна = (
0,
0,
1,
1,
1,
1
);
}
Для приведенного выше результата я использую:
// [thePlayers removeAllObjects]; // <<<<<<<<<<<<<<<<<<<<<<<<<< </p>
Когда я изменяю и удаляю комментарий "//":
[thePlayers removeAllObjects]; // <<<<<<<<<<<<<<<<<<<<<<<<<< </p>
Я получаю следующий результат:
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 пустые, так как я являюсь «removeAllObjects» в массиве в конце цикла после того, как я обновил dict? Я пробовал "setObject: forKey:", но безуспешно.