2014-09-21 2 views
0

Я пытаюсь загрузить контроллер просмотра, где акселерометр перемещает изображение. появляется ошибка в заголовке, и приложение падает при загрузке просмотра."countByEnumeratingWithState: objects: count:" Error

- (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); 
      } 

     } 

    } 

} 

Ошибка показывает на линии: для (UIView * изображение в self.wall) {

Пожалуйста, помогите!

+1

Показать полное сообщение об ошибке. И каков тип данных 'self.wall'? – rmaddy

+0

Стена - это изображение, которое я хочу, чтобы движок отскакивал. Ошибка показывает: Тип выражения коллекции «UIImageView *» может не отвечать на «countByEnumeratingWithState: objects: count:» – Yugaman

+0

Возможно, вам нужно «для (UIImage * image в self.wall.animationImages)». – rmaddy

ответ

2

Синтаксис в заявлении:

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

следует читать как «для каждого объекта, который мы будем рассматривать в качестве указателя на UIView и называют image, в коллекции self.wall, делать ...». Из того, что вы говорите, self.wall не является коллекцией. Это UIImageView. В этом причина ошибки. Вы пишете заявление, которое требует коллекции, но вы не предоставляете коллекцию.

Итак, почему вы используете цикл for здесь? Ничего не нужно перебирать. Вы имели в виду использовать другое выражение, которое оценивалось бы в коллекции вместо self.wall?

Смежные вопросы