在我的应用程序中,我启用了 ARC,并且对它也很陌生。由于对启用 ARC 的代码的缺乏经验处理,我遇到了一些麻烦
我有一个名为data
type的强属性和一个相同类型 NSMutableArray
的弱实例变量_currentData
我使用_currentData
在应用程序中加载 tableView。我要显示的主要集合始终是data
可变的。我将变量指向的 MutableArray 指向data
变量_currentData
,下面是我的 ViewDidLoad
-(void)ViewDidLoad
{
data=[[NSMutableArray alloc]init];
//load the data
_currentData=data;
[myTableView reloadData];
}
我的数据源方法如下
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [_currentData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
id var=[_currentData objectAtInsex:indexPath.row];
//.....my drawing methods on the cell View
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
id var=[_currentData objectAtInsex:indexPath.row];
NSlog(@"var %@",var);
}
上面的代码工作正常,每次我点击单元格时都会打印出 var,直到我计划像下面的代码那样实现搜索栏
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
_currentData =[data filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"name contains[c] '%@'",searchText]]];// Object with attribute name
[myTableView reloadData];
}
上面的代码可以正常工作,直到在 tableView 中显示过滤后的结果,但是当我点击任何行时,我得到了空打印
我不知道哪里出错了。