0

緯度、経度、都市名などの多くの情報を含む配列がありますが、このすべての情報はクラスオブジェクトによって保存されます。

("<GetCityList: 0x1fd334d0>",
"<GetCityList: 0x1fd33560>",
"<GetCityList: 0x1fd33310>",)

私の配列は次のようになっています。都市名が必要な場合は、最初にGetCityListオブジェクトを作成し、次にobject.cityNameを作成します。ここで、cityNameを比較してlatとlonを検索する必要があります。時間がかかりすぎるため、どうすればよいですか?述語を使用できますか?

4

3 に答える 3

3

cityListの配列があり、これを都市名でフィルタリングしたいとします。

NSPredicate *cityNamePredicate = [NSPredicate predicateWithFormat:@"cityName contains[c] %@", @"cityName"]
NSArray *filteredCityList = [cityList filteredArrayUsingPredicate:cityNamePredicate];

上記のfilteredCityListは、パラメーターで渡したものに関係なく、必要なフィルター処理された配列になります。ここで[cd]は、症例と糖尿病に鈍感であることを意味します

NSPredicateの詳細については、このチュートリアルを参照してください。

于 2012-10-22T10:22:51.467 に答える
0

例:

self.data = [NSArray arrayWithObjects:
                         [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"To Airport",@"TO/AIR", nil] forKeys:[NSArray arrayWithObjects:kName,kCode, nil]],
                         [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"Point-to-Point",@"PTP", nil] forKeys:[NSArray arrayWithObjects:kName,kCode, nil]],[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"From Airport",@"FR/AIR", nil] forKeys:[NSArray arrayWithObjects:kName,kCode, nil]], nil];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(name CONTAINS[cd]  %@)",searchText];
self.searchableData = [self.data filteredArrayUsingPredicate:predicate];

これに基づいて、nameをcityNameに置き換えることができます。

于 2012-10-22T10:22:39.493 に答える
0

このようにも使用してください:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"cityName contains %@", @"cityNamehere"]

NSMutableArray *filtered = [cityListArray filterUsingPredicate:predicate];
于 2012-10-22T10:39:48.307 に答える