0

我只是在学习objective-c。希望这对于以前使用过 NSMutableArrays 的任何人来说都是一个简单的修复。

注意:在问这个问题之前,我已经在 you tube 上观看了 3 个视频并阅读了 5 篇文章。setValue:forKey 有很多可用资源,但我认为这不适用于这种情况。

我正在尝试使用一个简单的数组来支持井字游戏中的选择。概念很简单: - 用 9 个数组节点实例化数组 - 当做出选择时,当前字母将被放置在相应的数组节点中 - 检查游戏结束的方法将引用数组节点。

问题: - 我尝试为每个默认对象设置NSNull值而不是。@""我得到一个错误"Unexpected interface name 'NSNull'。- 调试数组节点的 NSLog 逻辑永远不会执行。我的假设是数组没有被填充。


@synthesize lblStatus, currLetter;
@synthesize selections;
@synthesize btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8;

- (void)viewDidLoad
{
    [super viewDidLoad];

    [selections initWithObjects:
     @"", @"", @"", @"", @"", @"", @"", @"", @"", nil];

    currLetter = @"X";
    [self updateTitle];
    // Do any additional setup after loading the view, typically from a nib.
}

- (IBAction)takeTurn:(id)sender {
    UIButton *btn = (UIButton *)sender;
    if (btn.currentTitle == nil) {
        [selections replaceObjectAtIndex:btn.tag withObject:currLetter];
        [sender setTitle:currLetter forState:UIControlStateNormal];
        [self changeTurns];
    }
}

- (void)changeTurns {

    if ([currLetter isEqualToString:@"X"]) {
        currLetter = @"O";
    } else {
        currLetter = @"X";
    }

    for (NSString *node in selections) {
        NSLog([NSString stringWithFormat:@"Node: %@", node]);
    }

    [self updateTitle];
}

- (void)updateTitle {
    [lblStatus setText:[NSString stringWithFormat:@"%@'s Turn", currLetter]];
}

如果您看到其他被认为是“错误代码”的内容,我也很乐意接受该反馈。

任何帮助是极大的赞赏。

4

2 回答 2

1

代替[selections initWithObjects: @"", @"", @"", @"", @"", @"", @"", @"", @"", nil];

selections = [[NSMutableArray alloc] initWithObjects: @"", @"", @"", @"", @"", @"", @"", @"", @"", nil];

于 2013-05-09T13:29:49.423 回答
-1

尝试将 [NSNull null] 添加到该数组。您可以在数组中添加空对象而不是空字符串

此致

于 2013-05-09T13:48:08.777 回答