我試圖在我的應用程序中實現可搜索的tableview,當有人可以搜索某個位置並獲得結果時。它看起來是這樣的:從JSON過濾NSArray?
我從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";
},
我想要做的是,如果「整箱」(數組中看到的)等於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;
}
如果你沒有收到大量的結果,那麼最簡單的方法可能就是放棄你不想要的結果。 IE:讓JSON解析器做它的事情,循環遍歷結果並將感興趣的記錄複製到新的NSMutableArray中。 – Brian 2012-07-24 22:28:42
@rhooligan我很樂意這樣做......除非我真的不知道該怎麼做:P。正確的方向將是偉大的,謝謝! – sridvijay 2012-07-24 22:30:31
你有多遠?你是否能夠讓解析器返回一個NSArray對象或類似的NSArray? – Brian 2012-07-24 22:33:04