【发布时间】:2016-01-28 11:29:18
【问题描述】:
我有一个包含 12 个部分的数组,我需要替换索引处的值。 我的测试代码:
NSMutableArray *hm = [[NSMutableArray alloc] initWithObjects:@{@"first": @[@"test1", @"test2"]}, @{@"second": @[@"test1"]}, nil];
NSLog(@"%@", [hm valueForKey:@"first"][0][0] );
[[hm valueForKey:@"first"][0] replaceObjectAtIndex:0 withObject:@"lol"];
NSLog(@"%@", hm);
第一个 NSLog 返回:test1 - 没关系
当替换- crash with -[__NSArrayI replaceObjectAtIndex:withObject:]: unrecognized selector sent to instance 0x7fde53d2f700时
我需要将 test1 更改为一些东西。
请问我哪里做错了?
【问题讨论】:
-
您的内部数组是不可变的 (
NSArray),然后您需要是可变的 (NSMutableArray)。如果您避免使用嵌套数组并使用自定义对象,它会变得更加简单。 -
hm 是可变数组。当使用 [ hm replaceObjectAtIndex:0 withObject:@"lol"] - 它返回 lol 和 second
-
你的 inner 数组是不可变的,例如
@[@"test1", @"test2"].
标签: ios objective-c