“countByEnumeratingWithState:objects:count:”错误

时间:2014-09-21 18:54:40

标签: ios xcode semantics

我正在尝试加载视图控制器,其中加速度计正在移动图像视图。标题中显示错误,应用程序在加载视图时崩溃。

- (void)collsionWithWalls {

    CGRect frame = self.Mover.frame;
    frame.origin.x = self.currentPoint.x;
    frame.origin.y = self.currentPoint.y;

    for (UIView *image in self.wall) {

        if (CGRectIntersectsRect(frame, image.frame)) {

            // Compute collision angle
            CGPoint MoverCenter = CGPointMake(frame.origin.x + (frame.size.width / 2),
                                               frame.origin.y + (frame.size.height / 2));
            CGPoint imageCenter  = CGPointMake(image.frame.origin.x + (image.frame.size.width / 2),
                                               image.frame.origin.y + (image.frame.size.height / 2));
            CGFloat angleX = MoverCenter.x - imageCenter.x;
            CGFloat angleY = MoverCenter.y - imageCenter.y;

            if (abs(angleX) > abs(angleY)) {
                _currentPoint.x = self.previousPoint.x;
                self.MoverXVelocity = -(self.MoverXVelocity / 2.0);
            } else {
                _currentPoint.y = self.previousPoint.y;
                self.MoverYVelocity = -(self.MoverYVelocity / 2.0);
            }

        }

    }

}

错误显示在该行上:     for(UIView * self.wall中的图片){

请帮忙!

1 个答案:

答案 0 :(得分:2)

for-in语句语法:

for (UIView *image in self.wall) ...

应该被理解为“对于每个对象,我们将其视为UIView的指针,并在集合image中调用self.wall,执行...”。根据你的说法,self.wall不是一个集合。这是一个UIImageView。这就是错误的原因。您正在编写一份需要集合的声明,但您没有提供集合。

那么,为什么你在这里使用for循环呢?没有什么可以循环的。您是否要使用其他表达式来评估集合而不是self.wall