Ios 例外情况;“发送到不可变对象的变异方法”;
我在Ios 例外情况;“发送到不可变对象的变异方法”;,ios,objective-c,nsarray,Ios,Objective C,Nsarray,我在[array removeObjectsInArray:toRemove]行中遇到异常在下面的方法中,无法理解它的错误 - (void) handleDearchForTerm:(NSString *)searchTerm { NSMutableArray *sectionsToRemove = [[NSMutableArray alloc] init]; [self resetSearch]; for (NSString *key in _keys) {
[array removeObjectsInArray:toRemove]行中遇到异常代码>在下面的方法中,无法理解它的错误
- (void) handleDearchForTerm:(NSString *)searchTerm
{
NSMutableArray *sectionsToRemove = [[NSMutableArray alloc] init];
[self resetSearch];
for (NSString *key in _keys)
{
NSMutableArray *array = [_names valueForKey:key];
NSMutableArray *toRemove = [[NSMutableArray alloc] init];
for (NSString *name in array)
{
if ([name rangeOfString:searchTerm options:NSCaseInsensitiveSearch].location == NSNotFound)
[toRemove addObject:name];
}
if ([array count] == [toRemove count])
[sectionsToRemove addObject:key];
[array removeObjectsInArray:toRemove];
}
[_keys removeObjectsInArray:sectionsToRemove];
[_table reloadData];
}
可能数组只是NSArray
的实例,但不是NSMutableArray
,您应该检查\u names setObject:forKeys:
可能数组只是NSArray
的实例,但不是NSMutableArray
,您应该检查\u names setObject:forKeys:
更改:
NSMutableArray *array = [_names valueForKey:key];
致:
或:
更改:
NSMutableArray *array = [_names valueForKey:key];
致:
或:
您确定[\u names valueForKey:key]返回的是NSMutableArray*而不是NSArray*?我没有看到*数组的alloc/init。正如上面的评论所暗示的,尝试NSMutableArray*array=[[u name valueForKey:key]mutablecopy];是的,有帮助。。谢谢,它可能会使错误消息消失,但是如果您希望在适当的位置对现有数组进行变异,它将不会执行您期望的操作。您确定[\u names valueForKey:key]返回的是NSMutableArray*而不是NSArray*?我没有看到*数组的alloc/init。正如上面的评论所暗示的,尝试NSMutableArray*array=[[u name valueForKey:key]mutablecopy];是的,有帮助。。谢谢,它可能会使错误消息消失,但如果您希望在适当的位置对现有数组进行变异,它将不会执行您期望的操作。@property(强,非原子)NSMutableDictionary*names。。这是书中的例子。是的,你是如何构造名字的?或者检查调用方法setObject:forKeys:If\u names
是NSArray
s[\u names valueForKey:key]
将返回NSArray
而不是NSMutableArray
。集合不保留其内容的可变性。@属性(强,非原子)NSMutableDictionary*names。。这是书中的例子。是的,你是如何构造名字的?或者检查调用方法setObject:forKeys:If\u names
是NSArray
s[\u names valueForKey:key]
将返回NSArray
而不是NSMutableArray
。集合不保留其内容的可变性。NSMutableArray*array=[[u name valueForKey:key]mutableCopy]代码>NSMutableArray*array=[[u name valueForKey:key]mutableCopy]代码>
NSMutableArray *array = [[_names valueForKey:key] mutableCopy];