我正在调用一个方法getHoleScore来填充NSMutableArray并返回它。我正在尝试复制数组,以便调用方法可以访问项目但我每次都得到此异常:
异常'NSRangeException',原因:' * - [__ NSArrayM objectAtIndex:]:索引0超出空数组的界限'
我尝试了多种不同的复制数组的方法,我在这个网站上发现但似乎没什么用。这是代码:
Score *theScore = self.roundScore;
NSMutableArray *scores = [[[self delegate]getHoleScore:self score:theScore] mutableCopy];
NSInteger total = 0;
if (theScore) {
self.playerName.text = theScore.name;
self.courseName.text = theScore.course;
self.hole1Field.text = [NSString stringWithFormat:@"%d", [[scores objectAtIndex:0] integerValue]];
self.hole2Field.text = [NSString stringWithFormat:@"%d", [[scores objectAtIndex:1] integerValue]];
self.hole3Field.text = [NSString stringWithFormat:@"%d", [[scores objectAtIndex:2] integerValue]];
self.hole4Field.text = [NSString stringWithFormat:@"%d", [[scores objectAtIndex:3] integerValue]];
self.hole5Field.text = [NSString stringWithFormat:@"%d", [[scores objectAtIndex:4] integerValue]];
等
关于如何填充得分数组的任何想法?
答案 0 :(得分:1)
你的可变数组达到0,因为它还没有为alloc / init。您必须将此NSMutableArray *myscores = [NSMutableArray array];
置于[[self delegate]]调用之上。
或者更好的方法是创建你的myscores并使用这个内置的nsarray超类方法传递方法,该方法负责处理你的数组的alloc / init。
NSMutableArray *myscores =
[NSMutableArray arrayWithArray:[[self delegate] getHoleScore:self
score:theScore];
也确保这一点
[[self delegate]getHoleScore:self score:theScore]
没有向您发送一个空数组,调用-objectAtIndex:空数组上的a将导致代码崩溃。检查数组是否为空的好方法是在数组上调用方法-count方法,调用数组上的count不会导致代码崩溃,即使它是零。
答案 1 :(得分:0)