2015-12-23 6 views
-1

Я получаю данные из SOAP webservice. затем добавить эти данные в изменяемых array.this мой код мыла сообщенияКак добавить данные в MutableArray после фильтрации данных из webservice в iOS

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]; 

если [email protected]"", то служба возвращает все данные. if [email protected]"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]; 

    }); 

получить все данные sucess.no idea. Я stucked с this.hope вашей help.thanx

+0

Привет братан, где вы stucked? вы уже добавлены в массив fullAirport. что именно вы хотите? –

+0

Вы хотите отфильтровать fullAirport, основываясь на charecter? –

+0

Я хочу создать текстовое поле автозаполнения. Это означает, что когда я набираю 'a', аэропорты начинаются с a, должны указывать в качестве текстовых полей для автозаполнения. Я пробовал использовать два метода mutablearrays и text delegate. Когда я использую статическое количество данных, с которыми он работал. но если бы я использовал этот массив для полного доступа, он дает ошибки – Jobs

ответ

1

использование предикаты

NSString *alphabet = "textfield text"// searching value 

NSPredicate *pred =[NSPredicate predicateWithFormat:@"self.fullAirport beginswith[c] %@", alphabet]; 
NSArray *filteredArr = [yourArray filteredArrayUsingPredicate:pred]; 

filteredArr все ваши отфильтрованный список

+0

мой массив является nsmutabletype, следует ли использовать переменную копию с этим – Jobs

+0

да после фильтрации вы можете применить mutable –

+0

@subash, вы можете фильтровать? есть ли у вас какие-либо проблемы? –

 Смежные вопросы

  • Нет связанных вопросов^_^