0

以下のメソッドの行に例外があり、[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];
}
4

2 に答える 2

3

おそらく配列は の単なるインスタンスですNSArrayが、そうではありませんNSMutableArray。チェックする必要があります_names setObject:forKeys:

于 2013-09-17T11:25:04.633 に答える
1

変化する:

 NSMutableArray *array = [_names valueForKey:key];

に:

 NSMutableArray *array = [[NSMutableArray alloc] initWithArray:[_names valueForKey:key]];

または:

 NSMutableArray *array = [[_names valueForKey:key] mutableCopy];
于 2013-09-17T11:57:52.487 に答える