我不明白为什么我在这段代码中得到“发送到不可变对象的变异方法”。该数组必须以某种方式是不可变的,但我不知道为什么。
界面:
@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”我缺少什么?
Thanks!
valueForKey:
返回一个NSArray
。您将其发送至NSMutableArray
.
您可以将结果投射到(NSMutableArray *)
,但我个人更喜欢获得一份副本:
NSMutableArray *array = [[[names valueForKey:key] mutableCopy] autorelease];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)