2015-10-29 2 views
0

Я пытаюсь добавить адрес улицы в свой текстовый стол UITableViewCell. Проблема, с которой я сталкиваюсь, заключается в том, как фиксировать уникальный адрес улицы для каждого cell в Table View.Добавление MKPlacemark addressDictionary в UITableViewCell

Прямо сейчас он захватывает первую уличную ценность первого экземпляра в словаре и устанавливает ее как адрес улицы для каждого cell.

Я предполагаю, что мне нужно захватить индекс, который я нахожу, а затем извлекаю значение улицы из словаря, хотя я не совсем уверен, как это сделать.

Вот мой код

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = UITableViewCell(style: .Subtitle, reuseIdentifier: "Cell") 
    // searchResults is an array of MKMapItems 
    cell.textLabel?.text = self.searchResults[indexPath.row].name 

    // the line that is causing me trouble 
    cell.detailTextLabel?.text = placeMarkAddress["Street"] as? String ?? "" 

    return cell 

} 


func searchQuery(query: String) { 


    // request 
    let request = MKLocalSearchRequest() 
    request.naturalLanguageQuery = query 
    request.region = mapView.region 

    UIApplication.sharedApplication().networkActivityIndicatorVisible = true 

    // search 
    let search = MKLocalSearch(request: request) 
    search.startWithCompletionHandler { (response, error) -> Void in 

     UIApplication.sharedApplication().networkActivityIndicatorVisible = false 

     if(error != nil) { 

      print(error?.localizedDescription) 

     } else { 

      // storing data about location in dictionary 
      for item in (response?.mapItems)! { 

       self.placeMarkAddress = item.placemark.addressDictionary! 
       // prints expected results in console (not repeating, different for each MKMapItem) 
       for (key,value) in self.placeMarkAddress { 
        print("\(key) -> \(value)") 
       } 
      } 

      // storing the array of mkmapitems in the array 
      self.searchResults = (response?.mapItems)! 
     } 


    } 

} 

Address repeating Улица адрес твердит

Заранее спасибо за любую помощь.

+0

Можете ли вы опубликовать код, в который вы храните его в 'placeMarkAddress'? Это может помочь больше. Я думаю, вы просто замените «placeMarkAddress» на цикл for или любой итерационный код. –

+0

Опубликовано. «PlaceMarkAddress» объявлен и инициализирован правильно и дает мне ожидаемые результаты в консоли (не повторяя, уникальное значение для каждого 'MKMapItem'). Проблема, с которой я сталкиваюсь, заключается в том, как я собираюсь захватить каждый уникальный экземпляр из словарь и назначить его в 'detailTextLabel'. – Mihado

ответ

2

Вам нужно создать массив "placeMarkAddress".

var placeMarkAddress: NSMutableArray; 

Теперь добавьте в него адрес.

for item in (response?.mapItems)! { 
       self.placeMarkAddress.addObject(item.placemark.addressDictionary!) 

} 
+0

Да! Я создал массив и в том же цикле, в котором я инициализирую свой словарь, я заполню свой массив списком адресов. Не забудьте вызвать метод removeAll (keepCapacity: boolean) для сброса словаря и массива каждый раз, когда вызывается 'UISearchResultsUpdating'. Спасибо! – Mihado

0

Прежде всего вам необходимо получить MKmapItem's instance за каждые UITableViewCell, а затем найти street address от MKmapItem's plcaemark.

Примечание: код в Objective-C, так делают его быстрым

MKmapItem *mapItem = self.searchResults[indexPath.row]; 
NSDictionary *itemAddressDictionary = mapItem.placemark.addressDictionary; 
//get required string from itemAddressDictionary and set in cell.detailTextLabel 
NSString *strStreet = [itemAddressDictionary objectForKey:@"Street"]; 
cell.detailTextLabel.text = strStreet; 
+0

Я уже сделал эту часть, и все работает отлично. Словарь уже заполнен. Вопрос заключается в том, как запрашивать информацию для каждого уникального 'MKMapItem', если вы не можете указать NSIndex. – Mihado

+0

@ Михадо: вам нужно печатать, как показано ниже. Улица, Город, Состояние. право? –

+0

Для каждой ячейки будет NSIndexPath, поэтому здесь не может быть никакого случая, когда в UITableViewCell не будет NSIndexPath –

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