私は自分のアプリに検索可能なテーブルビューを実装しようとしています。そこでは、誰かが場所を検索して結果を得ることができます。これは次のようになります。
私はgenomes.comからソースを取得しています。これは、都市だけでなく、公園、建物、郡なども提供しています。都市である場所だけを表示したいと思います。
データは、JSONKitによって解析されるJSONファイルです。ファイル全体(最大20個のオブジェクト)が入ってくると、検索可能なテーブルビューにそれが表示されます。JSONファイルを別の方法で解析する必要があるのか、それともテーブルビューに必要な結果のみを表示させる必要があるのかわかりません。(この場合のパフォーマンスは問題ではありません。)JSONファイルはNSArrayに変換されます。
配列の一部は次のとおりです。
{
adminCode1 = MA;
adminCode2 = 027;
adminName1 = Massachusetts;
adminName2 = "Worcester County";
adminName3 = "";
adminName4 = "";
adminName5 = "";
continentCode = NA;
countryCode = US;
countryName = "United States";
elevation = 178;
fcl = A;
fclName = "country, state, region,...";
fcode = ADMD;
fcodeName = "administrative division";
geonameId = 4929431;
lat = "42.2000939";
lng = "-71.8495163";
name = "Town of Auburn";
population = 0;
score = "53.40083694458008";
timezone = {
dstOffset = "-4";
gmtOffset = "-5";
timeZoneId = "America/New_York";
};
toponymName = "Town of Auburn";
},
私がやりたいのは、「fcl」(配列に表示される)がPに等しい場合、それをテーブルビューに表示することです。「fcl」が他の文字である場合、テーブルビューに表示されたくありません。ifステートメントでそれができると確信していますが、その一部をフィルタリングするように取得する方法がわかりません。
どんな助けでもいただければ幸いです!ありがとう
編集:今のところ、これは検索するコードです:
- (void)delayedSearch:(NSString*)searchString
{
[self.geoNamesSearch cancel];
[self.geoNamesSearch search:searchString
maxRows:20
startRow:0
language:nil];
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
self.searchDisplayController.searchBar.prompt = NSLocalizedStringFromTable(@"ILGEONAMES_SEARCHING", @"ILGeoNames", @"");
[self.searchResults removeAllObjects];
// Delay the search 1 second to minimize outstanding requests
[NSObject cancelPreviousPerformRequestsWithTarget:self];
[self performSelector:@selector(delayedSearch:) withObject:searchString afterDelay:0];
return YES;
}