2013-11-19 2 views
0

Я пытаюсь записать движение пальца пользователя и сохранить его как значения x и y с помощью nsmutablearrays и nsnumbers, я хочу отображать значения в консоли, используя nslog, как только как вызывается касание.Сохранение координат штриха касания в NSMutableArray

где я иду не так?

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    CGPoint Location = [touch locationInView:self.view]; 
    [xScreenLocations addObject:[NSNumber numberWithFloat:Location.x]]; 
    [yScreenLocations addObject:[NSNumber numberWithFloat:Location.y]]; 
} 


-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    int a = (int)[xScreenLocations count]; 
    while (a >= 0) 
    { 
     NSNumber *currentXNumber = [xScreenLocations objectAtIndex:a]; 
     float currentXInt = currentXNumber.floatValue; 
     NSNumber *currentYNumber = [yScreenLocations objectAtIndex:a]; 
     float currentYInt = currentYNumber.floatValue; 
     NSLog(@"%.1f %.1f",currentXInt,currentYInt); 
     a--; 
    } 
} 
+0

Какая ошибка возникает у вас? –

+0

Проверьте, назначены ли вы/init массивы. Самая распространенная ошибка. –

+1

Off topic: вы можете использовать '[NSValue valueWithCGPoint: location]' для хранения объекта CGPoint в NSMutableArray. Таким образом, вам не нужны два массива для сохранения координат x и y. – crizztus

ответ

0

У вас есть неправильный индекс, а есть число точки в массиве, то есть начиная с (а - 1) до 0 ([xScreenLocations objectAtIndex:(a - 1)] вместо [xScreenLocations objectAtIndex:a]), вы также должны исправить вы кондиционировать в в то время как цикл (a > 0) вместо (a >= 0).

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    int a = (int)[xScreenLocations count]; 
    while (a > 0) 
    { 
     NSNumber *currentXNumber = [xScreenLocations objectAtIndex:(a - 1)]; 
     float currentXInt = currentXNumber.floatValue; 
     NSNumber *currentYNumber = [yScreenLocations objectAtIndex:(a - 1)]; 
     float currentYInt = currentYNumber.floatValue; 
     NSLog(@"%.1f %.1f",currentXInt,currentYInt); 
     a--; 
    } 
} 
+0

Основной проблемой было то, что я не выделял/не инициалировал свои массивы, извините за эту глупую ошибку, я не запрограммировал для iPhone через некоторое время. но ваш ответ был также полезен, у меня была одна ошибка, спасибо всем за быстрый ответ. –