私のアプリケーションでは、ARC を有効にし、それを初めて使用します。経験の浅い ARC 対応コードの処理が原因でトラブルが発生しました。
data
タイプの名前付きの強力なプロパティと、同じタイプの NSMutableArray
弱いインスタンス変数があります_currentData
を使用し_currentData
て、アプリケーションに tableView をロードします。表示したい主なコレクションは常にdata
可変です。data
変数ごとに変数が指す MutableArray を指し_currentData
、以下は私の ViewDidLoad です
-(void)ViewDidLoad
{
data=[[NSMutableArray alloc]init];
//load the data
_currentData=data;
[myTableView reloadData];
}
私のdataSourceメソッドは以下のようなものです
- (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に表示するまでは正常に機能していますが、行のいずれかをタップするとnullが出力されました
どこが間違っていたのかわかりません。