こんにちは、おそらく簡単な質問がありますが、まだ処理できません。
- カテゴリ ID (12、23、56) を持つ配列を保持する Modelclass 'Location' があります。
- 次に、利用可能なすべてのカテゴリ ID (1、2、3、4、5、6、7、...) を含む配列があります。
- このすべてのカテゴリには ID があり、TableView に表示され、選択するかどうかを選択できます。
- 前述の Filter TableView でのフィルターの選択に基づいて表示する必要がある MapView (Annotation Class is Location) にマーカーのパンチを表示します。
リスト内の選択に基づいて、すべてのマーカーを削除して再度追加する「カテゴリによるフィルター」機能を実装する必要があります。
したがって、配列とロケーション モデルのフィルター ID を、TableView のすべてのフィルター ID を含む配列と比較する必要があります。これには次の関数を使用しました。
for (Location *currLocation in arrListOfLocationsNearby) {
for (NSString *currKatId in currLocation.arrKatIds) {
NSInteger intCurrKatId = [currKatId integerValue];
NSLog(@"Current KatId %@ id: %d \n", currLocation.strAdr, intCurrKatId);
for (Filter *currFilter in [SDM getSharedDataManager].arrListOfFilterOptions) {
if (currFilter.isSelected) {
NSInteger intCurrFilterId = [currFilter.strAtt_id intValue];
NSLog(@"Current Filter %@ id: %d \n", currFilter.strAtt_text, intCurrFilterId);
if ([currKatId intValue] == [currFilter.strAtt_id intValue]) {
currLocation.isVisible = YES;
}else {
currLocation.isVisible = NO;
}
}
}
} }
これがすべてをループする最も効果のない方法であることはわかっています。これに何らかの形で NSPredicate を使用したいのですが、これまで使用したことがなく、問題の例が見つかりません。
皆さんからのヒントはありますか?
よろしくm。