Я хочу фильтровать массив - PullRequest
0 голосов
/ 13 марта 2020

Я получил два массива из вызова API, один - nameArray - который содержит имена рецептов (menuNameArray = ["pohe","bread","cheese chilli toast"], а другой массив - который содержит цены на эти рецепты (menuPriceArray = ["10", "40", "120"].

Я получил эти два массива из Вызов API.

Я отображаю оба массива в табличном представлении, и я ищу в menuNamesArray, потому что я хочу искать по именам рецептов.

Я получаю имена рецептов, просматривая их из menuNameArray. Теперь я хочу, чтобы menuPriceArray также обновлялся в соответствии с искомым массивом menuName. Это означает, что если я ищу «хлеб», то я должен получить значение цены как «40» и, соответственно, для других имен.

Как я должен выполнить такую ​​фильтрацию на втором массиве?

Мой фрагмент кода -

//MARK: UISearch result update delegate

func updateSearchResults(for searchController: UISearchController) {

    // here arrFilter is the resulting array to sotre searched items from menuNamesArray
    arrFilter.removeAll(keepingCapacity: false)

    let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!)
    let array = (menuNamesArray as NSArray).filtered(using: searchPredicate)

    let result = menuPriceArray.firstIndex(of: array.startIndex)
    arrFilter = array as! [String]

    self.tblSearch.reloadData()

    //here now I got the searched menu names, Now I want prices for searched menu names from menuPrice Array..
}

Ответы [ 2 ]

2 голосов
/ 13 марта 2020

Никогда не используйте несколько массивов в качестве источника данных .

Swift - объектно-ориентированный язык. Воспользуйтесь этим.

Создайте структуру

struct Menu {
    let name : String
    let price : Double
}

и массив источника данных

var menues = [Menu]()

Отфильтруйте массив по name и получите цену, довольно просто и понятно

if let foundMenu = menues.filter(where: {$0.name == "bread"}) {
    print(foundMenu.price)
}
0 голосов
/ 13 марта 2020

Вы можете объединить два массива в один массив элементов словаря.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...