0

UITableView車のメーカーをメインのビューコントローラーに追加するアプリを作成しているとしましょUITableViewう.

今、私の問題は非常に単純です。メーカーを追加できますが、メーカー名を押すと、すべてのメーカーのすべてのモデルを含む2番目のテーブルビューが表示されます。

おそらく述語を使用して、可変配列をフィルタリングしてから、2番目のView Controllerに渡してみました。失敗 :(

 NSPredicate * pred = [NSPredicate predicateWithFormat:@"currentCategoryOfImage = '%@'",[self.categoriesArray objectAtIndex:indexPath.row]];
    [self.myImagesObjArray filterUsingPredicate:pred];
    self.detailViewController.imagesItem = self.myImagesObjArray;

しかし、これを行うためのはるかに簡単な方法がどこかにあると思いますが、それでも私にはわかりません。

4

2 に答える 2

1

%@述語で一重引用符で囲まないでください。

NSPredicate *pred = [NSPredicate predicateWithFormat:@"currentCategoryOfImage = %@",[self.categoriesArray objectAtIndex:indexPath.row]];

また、おそらく を変更したくないでしょうがself.myImagesObjArray、詳細ビュー コントローラーのリストをフィルター処理された配列に設定します。

self.detailViewController.imagesItem = [self.myImagesObjArray filteredArrayUsingPredicate:pred];
于 2013-05-17T19:34:33.787 に答える
0

そして、最初の種類の述語が気に入らない場合は、次のようなブロック付きの述語があります。

YourCustomObject = [self.categoriesArray objectAtIndex:indexPath.row];
NSArray *resultArray = [yourArray filteredArrayUsingPredicate: [NSPredicate predicateWithBlock:^BOOL(YourCustomObject *object, NSDictionary *bindings) {
   return [YourCustomObject.comparedProperty isEqualTo:object.comparedProperty];
}]];

私はあなたのモデル クラス名を知らなかったので、即興で作りました。

于 2013-05-17T19:54:06.337 に答える