Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 例外情况;“发送到不可变对象的变异方法”;_Ios_Objective C_Nsarray - Fatal编程技术网

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];