2014-09-09 3 views
0

В моем классе MyClass1 я NSMutableArray declarated так:NSMutableArray пройти по ссылке

NSMutableArray *somearray = [NSMutableArray new]; 
NSMutableArray *somearray2 = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3", nil]; 
[somearray addObject: somearray2]; 

Позже я создаю экземпляр другого класса и отправить этот массив как параметр:

Myclass2 *secondclass = [Myclass2 new]; 
[secondclass updateData: somearray]; 

В UpdateData:

-(void) updateData:(NSMutableArray *) myArray{ 
    [myArray[0][1] replaceObjectAtIndex:1 withObject:@"Some text"]; // here receive error 
} 

и получать сообщение об ошибке, как я могу отправить ссылку на мой «SomeArray» в соседний r классов и работать с ним (а не копировать их)? Я могу создать глобальную переменную, но не буду этого делать.

Извините, я обновляю свой вопрос.

Ошибка

2014-09-09 12:40:38.778 FCalendar[12644:613] -[__NSArrayI replaceObjectAtIndex:withObject:]: unrecognized selector sent to instance 0x10963fec0 
2014-09-09 12:40:38.783 FCalendar[12644:613] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI replaceObjectAtIndex:withObject:]: unrecognized selector sent to instance 0x10963fec0' 
+1

Я уверен, что 'myArray' не является экземпляром' NSMutableArray', можете ли вы зарегистрировать его класс? 'NSLog (@"% @ ", [myArray class]);' – KudoCC

+2

Исключение показывает, что это 'NSArray', а не' NSMutableArray'. Код, который вы публикуете, не является точным. – trojanfoe

+0

Показать трассировку стека. Вы просите о помощи и скрываете необходимую информацию. И расскажите нам о любых предупреждениях, которые вы получаете. – gnasher729

ответ

2

Вы создали NSArray экземпляр а не NSMutableArray.

Попробуйте это:

NSMutableArray *somearray = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5", nil]; 

Edit: Вы исправить свой вопрос, так что я могу изменить свой ответ.

Эта строка кода неверна NSMutableArray *somearray2 = [[NSMutableArray new]initWithObjects:@"1",@"2",@"3", nil];, вместо этого вы должны использовать NSMutableArray *somearray2 = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3", nil];.

Тогда [myArray[0][1] replaceObjectAtIndex:1 withObject:@"Some text"];, думаю, это должно быть [myArray[0] replaceObjectAtIndex:1 withObject:@"Some text"];. Надеюсь, это то, что вы хотите, долгий путь.

+0

Это ошибка, я пишу вручную, не копирую из проекта. Я меняю здесь, в проекте везде NSMuttableArray. –

+1

@Never_be Не правда; сообщение об исключении говорит иначе. – trojanfoe

+0

Я уверен, что это не NSMuttableArray (вы можете догадаться, почему?). Скопируйте и вставьте код, поэтому мы не полагаемся на догадки. – gnasher729

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