Я не могу понять, почему я получаю «метод мутации, отправляемый неизменяемому объекту» в этом фрагменте кода Массив должен быть как-то неизменным, но я не знаю почему.
Интерфейс:
@interface SectionsViewController : UIViewController<UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate> {
UITableView *table;
UISearchBar *search;
NSMutableDictionary *names;
NSMutableArray *keys;
}
@property (nonatomic, retain) IBOutlet UITableView *table;
@property (nonatomic, retain) IBOutlet UISearchBar *search;
@property (nonatomic, retain) NSDictionary *allNames;
@property (nonatomic, retain) NSMutableDictionary *names;
@property (nonatomic, retain) NSMutableArray *keys;
-(void) resetSearch;
-(void) handleSearchForTerm:(NSString *)searchTerm;
@end
Обратите внимание, что names - это MutableDictionary.
Следующая строка выдает исключение
[array removeObjectsInArray:toRemove];
Здесь метод в полном контексте:
-(void)handleSearchForTerm:(NSString *)searchTerm
{
NSMutableArray *sectionsToRemove = [[NSMutableArray alloc] init];
for(NSString *key in self.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];
[toRemove release];
}
[self.keys removeObjectsInArray:sectionsToRemove];
[sectionsToRemove release];
[table reloadData];
}
Я присваиваю массив из результата этого [names valueForKey: key];
массив типа 'MutableArray' Что мне не хватает?
Спасибо!