2015-09-04 3 views
-1

Это мой массивКак заменить индекс объекта объекта NSMutableArray?

(
     (
     3, 
     3, 
     3 
    ), 
     (
     2 
    ), 
     (
     1, 
     1, 
     1, 
     1, 
     1, 
     1, 
     1 
    ) 
) 

Я хочу, чтобы заменить раздел значение объекта используя следующий код

[[sectionarray[indexPath.section] objectAtIndex:indexPath.row]replaceObjectAtIndex:indexPath.row withObject:@"0"]; 

, например

[[sectionarray[0] objectAtIndex:1]replaceObjectAtIndex:1 withObject:@"4"]; 

но приложение разбился, и ошибка, я получаю

-[__NSCFConstantString replaceObjectAtIndex:withObject:]: unrecognized selector sent to instance 0x9a218 

Как заменить значение объекта секции массива?

+0

У вас есть 3 массива справа? –

+0

да это 3 массив –

+0

у вас есть 3 отдельных массива и хотите заменить некоторые объекты какого-либо массива каким-либо другим объектом из другого массива? –

ответ

1

Вы вызываете replaceObjectAtIndex для объекта внутри массива вместо самого массива. Это должно работать:

[[sectionarray[indexPath.section] replaceObjectAtIndex:indexPath.row withObject:@"0"]; 
+0

'@" 0 "' должно быть '@ (0)' (это числа, а не строки). – trojanfoe

+0

@trojanfoe Код в вопросе показывает, что OP хочет заменить объект строкой. Крушение также показывает, что объекты в массиве являются строками. –

+0

Ах да. Интересно, уверен ли OP в этом. – trojanfoe

1

Вы размещаете другой уровень там, в объекты.

((3, 3, 3), (2), (1, 1, 1, 1, 1, 1, 1)) 

Позволяет делать анатомию вашего кода:

NSMutableArray *array = sectionarray[indexPath.section]; //gives you an array. 
id obj = [array objectAtIndex:indexPath.row] //give you the strings 3, 3, 3, 2, 1, 1,1 

и вы вызываете заменить на строку

[obj replaceObjectAtIndex:indexPath.row withObject:@"0"]; 

Решение: Вы должны сделать следующее:

//First get the array at that section 
NSMutableArray *arrayAtSection = sectionarray[indexPath.section]; 
//Now replace the object 
[arrayAtSection replaceObjectAtIndex:indexPath.row withObject:@"0"]; 

Написание на вашем пути кодирования:

[sectionarray[indexPath.section] replaceObjectAtIndex:indexPath.row withObject:@"0"]; 
+0

спасибо за ответ, но я хочу использовать sectionarray .. это мой массив orignal ((3, 3, 3), (2), (1, 1, 1, 1, 1, 1, 1)) Я хочу, чтобы этот массив такого типа ((3, 3, 3), (4), (1, 1, 1, 1, 1, 1, 1)) –

+0

@RohitRananaware убедитесь, что вы добавили NSMutableArrays в массиве секций. Теперь ваш желаемый массив находится в индексе 1 массива секций. Это означает, что раздел 1, строка 0. И вы можете заменить его новой строкой или номером. –

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