我从SOAP webservice获取数据。然后将这些数据添加到一个可变数组中。这是我的肥皂消息代码
SoapMessage = [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
"<soap:Body>\n"
"<GetAirport xmlns=\"http://mobileapi.bbq.uk/\">\n"
"<Authkey>%@</Authkey>\n"
"<AirportCode>%@</AirportCode>\n"
"</GetAirport>\n"
"</soap:Body>\n"
"</soap:Envelope>\n"
,AuthenticationKey, changewrd];
如果changewrd=@""
,则服务返回所有数据。 if changewrd=@"a"
然后服务返回从a.for changewrd开始的所有日期我使用textfied.text
。所以我想要的是如果用户在文本字段中键入a然后shoud只添加数据从 a开始,如果用户输入为,则olny添加数据从开始,而不是数据包含为。
因为有了这个,我想建立自动完成的textfiel。
这意味着当用户输入 a 时,所有名称都应从 a 开始作为代码提示。然后用户从中选择一个。所选文本应显示为textfield.text。通过从第一点过滤,我认为这很容易。如果还有其他任何方式请告诉我。这是我添加数据的方式。
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
Session = [NSURLSession sharedSession];
DataTask = [Session dataTaskWithRequest:TheRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (error) {
NSLog(@"data task with request error :%@", error);
return;
}
if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
NSInteger statusCode = [(NSHTTPURLResponse *)response statusCode];
if (statusCode != 200) {
NSLog(@"data task with request, HTTP status code :%ld", (long)statusCode);
return;
}
}
WebData = [[NSMutableData alloc] init];
[WebData appendData:data];
ResultString = [[NSMutableString alloc] initWithData:WebData encoding:NSUTF8StringEncoding];
TagremovedString = [self stringbyStrippingXml:ResultString];
NSError *Error;
ResultData = [TagremovedString dataUsingEncoding:NSUTF8StringEncoding];
id dictionary = [NSJSONSerialization JSONObjectWithData:ResultData options:kNilOptions error:&Error];
shortCode = [NSMutableArray array];
fullAirport = [NSMutableArray array];
for (NSDictionary *allAirports in dictionary) {
First *first = [First new];
first.fullAirport = [allAirports objectForKey:@"Airport"];
NSLog(@"%@", first.fullAirport);
[fullAirport addObject:first];
}
dispatch_async(dispatch_get_main_queue(), ^{
});
}];
[DataTask resume];
});
获取所有数据是成功的。没有想法。我一直坚持这个。你的帮助.thanx
答案 0 :(得分:1)
使用谓词
NSString *alphabet = "textfield text"// searching value
NSPredicate *pred =[NSPredicate predicateWithFormat:@"self.fullAirport beginswith[c] %@", alphabet];
NSArray *filteredArr = [yourArray filteredArrayUsingPredicate:pred];
filteredArr包含所有已过滤的列表