Убедитесь, что вы инициализируете коллекции в методе -initXXX
.Если нет, они будут назначены на nil
.
-(id)initXXX:... {
if ((self = [super initYYY:...])) {
...
p1TeamData = [[NSMutableDictionary alloc] init];
p2TeamData = [[NSMutableDictionary alloc] init];
...
}
return self;
}
Если все, что вы хотите, это "true" и "false", просто определите их самостоятельно.Это не причина использовать строку вместо BOOL.Фактически, Foundation уже определил TRUE и FALSE, кроме YES и NO.
Также, пожалуйста, используйте целое число для activePlayer
.
Вы всегда должны сравнивать NSString с -isEqualToString:
, а не ==
.
if ([haserror isEqualToString:@"true"])
...
if ([activePlayer isEqualToString:@"1"])
Это должно быть причиной того, что p1TeamData
всегда равен нулю, поскольку activePlayer == @"1"
ненадежен иможет быть материал игрока-1, назначенный на p2TeamData
.