2013-09-08 4 views
2

Я пытаюсь перетасовать массив, но я получаю «No visible @interface для« NSArray »объявляет селектор« exchangeObjectAtIndex: withObjectAtIndex: »на Последнее утверждение.Нет видимого @interface для 'NSArray' объявляет селектор 'exchangeObjectAtIndex: withObjectAtIndex

Как Баррэ должна быть объявлена?

NSArray *bArray; 

и

- (void)viewDidLoad 
     [self shuffleb]; 

затем

-(void) shufflb 
    { 
bArray = [NSArray arrayWithObjects: 
      @"ca", 
      @"do", 
      @"ba", 
      @"tr", 
      @"bu", 
      @"bl", 
      @"bo", 
      @"pu", 
      nil]; 

NSInteger count = [bArray count]; 
for (NSUInteger i = 0; i < count; ++i) { 
    // Select a random element between i and end of array to swap with. 
    NSInteger nElements = count - i; 
    n = (arc4random() % nElements) + i; 
    [bArray exchangeObjectAtIndex:i withObjectAtIndex:n]; 
} 

ответ

2
  1. Использование современной Objective-C (это делает ваш код лучше читать)

  2. метод вы хотите использовать присутствует только на NSMutableArray, таким образом, создать изменяемый массив или изменяемый копия NSArray (ниже):

    bArray = [@[@"ca", @"do", @"ba", @"tr", @"bu", @"bl",@"bo", @"pu"] mutableCopy]; 
    
+1

Пожалуйста, обратите внимание, что если вы REW обменивайте свой код на новый синтаксис, вам нужно удалить 'nil'! Просто замечание. –

+0

Вот почему нигде больше нет. Или вы просто хотели подчеркнуть этот факт? – Joride

+0

Да, просто подчеркнуть! Я даже поддержал ваш ответ –