2016-12-10 4 views
1

Я хотел бы знать, как обнаружить String внутри String из сохраненных данных. Все данные сохраняются с UUID().uuidString. String данные сохраняются в UITableView с его title Строка.Как найти строку в строке для фильтрации данных в Swift 3

Например, если теперь я нахожусь в DogTableView со своим названием в навигации «Собака», то данные будут «Собака». Данные «Собака» + uuid. И если теперь я перейду в CatTableView со своим названием в навигации «Cat», тогда данные будут «Cat» + uuid.

Теперь у нас есть два типа данных: Dog + uuid и Cat + uuid.

Таким образом, проблема заключается в том, что я хотел бы извлечь только данные Dog + uuid по некоторому алгоритму. Моя попытка заключалась в следующем:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if(segue.identifier == "animals"){ 

     let cell = sender as? UITableViewCell 
     let indexPath = tableView.indexPath(for: cell!) 

     let item:Animal 
     item = self.animals[indexPath!.row] 

     let dvc = segue.destination as! AnimalTableViewController 
     dvc.topTItle = item.name! 

     let singleton = AnimalManager.sharedInstance 
     //Animal data is saved with CoreData in AnimalTableViewController 
     let data = singleton.getAnimalData() 

     for d in data { 
      // This is not working.. 
      if (d.uuid?.contains(item.name!))! { 
       dvc.displayArray.append(d) 
      } 
     } 
     // I thought this would work by counting the item length 
     // Then using `Range` or something to detect the Dog or Cat. 
     // But I do not know how to do....at all 
     let length = item.name!.characters.count 
     for i in 0...length - 1 { 

     } 


    } 
} 

Как я способен фильтровать данные и показать отфильтрованные данные в следующую AnimaltableViewController надлежащим образом?

ответ

1

Прежде всего, почему ради всего святого uuid и name опционально ?? Я не знаю ни одного животного без имени. И любое значение nil in uuid проиграно u, которое представляет уникально.

На самом деле вы можете использовать функцию filter для фильтрации элементов в одной строке.

dvc.displayArray = data.filter { $0.uuid.hasPrefix("Dog") && $0.uuid.contains(item.name) } 

PS: Тем не менее, как вы имеете дело с Core Data было бы гораздо более эффективно фильтровать данные непосредственно в Core Data.

+0

эй большое спасибо !!! Я думал об этом сложным образом. Эта функция фильтра является удивительной! Кроме того, я начал использовать Core Data, поэтому я мало знаю об этом! Я буду искать прямое использование фильтрации в документе Apple позже. – Ryo

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

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