无法管理NSMutableArray中的单个元素

时间:2013-12-19 02:40:27

标签: ios objective-c cocoa-touch

所以我将一个类对象插入一个NSMutable数组,然后我试图管理每个索引对象的特定属性。

这里我创建了NsMutableArray:

    self.currentPuzzle = [[NSMutableArray alloc]init];

for(int i = 0; i < [temp length]; i++){     //temp is a string containing #'s and dots.

    AnswerSpecifier *objectToGetIntoArray = [[AnswerSpecifier alloc]init];
    objectToGetIntoArray.value = [[temp substringWithRange:NSMakeRange(i, 1)] intValue];

    [self.currentPuzzle addObject:objectToGetIntoArray];
}

在这里我试图更改每个对象的value属性。 value是一个int属性。

for (int i = 0; i < [self.board.boardString length]; i++) {
    [self.currentPuzzle objectAtIndex:i].value = [[self.board.boardString substringWithRange:NSMakeRange(i, 1)] intValue];

}

但是我收到错误,说明在id类型的对象上找不到属性值。我应该创建一个新阵列并将其分配给旧阵列吗?有更好的方法吗?

3 个答案:

答案 0 :(得分:3)

拆分你的代码。这使得它更容易阅读和调试。

for (int i = 0; i < [self.board.boardString length]; i++) {
    AnswerSpecifier *answer = self.currentPuzzle[i];
    NSString *boardString = [self.board.boardString substringWithRange:NSMakeRange(i, 1)];
    int value = [boardString intValue];
    answer.value = value;
}

你没有得到尽可能多的代码填入一行的分数。

但如果你真的只想修一行,你需要把演员放在适当的位置:

[(AnswerSpecifier *)self.currentPuzzle[i] setValue:[[self.board.boardString substringWithRange:NSMakeRange(i, 1)] intValue]];

答案 1 :(得分:1)

尝试输入对象

((AnswerSpecifier *)[self.currentPuzzle objectAtIndex:i]).value = [[self.board.boardString substringWithRange:NSMakeRange(i, 1)] intValue];

答案 2 :(得分:0)

尝试替换为:

for (int i = 0; i < [self.board.boardString length]; i++) {
    [[self.currentPuzzle objectAtIndex:i] setValue:[[self.board.boardString substringWithRange:NSMakeRange(i, 1)] intValue]];

}