Objective-c replaceObjectAtIndex由于数组结构中的数组而无法工作

时间:2015-09-16 14:37:54

标签: ios objective-c nsarray

我有一个数组,我得到这些代码的价值:

NSString *status = [[Sweetresponse objectAtIndex:path.row] objectAtIndex:9];

我想改变这个值:

[[Sweetresponse objectAtIndex:path.row] replaceObjectAtIndex:9 withObject:@"liked"];

但它不起作用,因为这个结构是数组中的数组。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这是因为NSArray是不可变的。你必须让它变得可变。

NSMutableArray *mutableResponse = [Sweetresponse mutableCopy];
NSMutableArray *mutableResponseItems = [[mutableResponse objectAtIndex:path.row] mutableCopy];
// replace at the index
[mutableResponseItems replaceObjectAtIndex:9 withObject:@"liked"];
// create immutables and replace it with our new array
mutableResponse[path.row] = [mutableResponseItems copy];
// set `Sweetresponse` (assuming it is an NSArray)
Sweetresponse = [mutableResponse copy];

编辑:我不知道Sweetresponse到底是什么,这里我假设它是NSArray

@trojanfoe有一个观点,即将此响应解析为自定义对象将导致更清晰的代码以及更简单的对象修改。