根据json中的值进行搜索

时间:2018-05-30 11:39:56

标签: ios swift uisearchbar

我的coredata模型中有一个名为name的属性,我可以根据这个属性进行搜索......

        filtered = self.newProdDetails.filter({( data : NewProduct) -> Bool in
            return (data.name!.lowercased().contains(searchText.lowercased()))
        })

现在,当我想根据名称进行搜索时,我可以在filtered中加载cellForRowAt..数组。

但是对于另一个视图,还有另一个实体具有名为customerJson的属性。而这个json在其customerName内有我想要搜索的基础。

在我首先提到的场景中,我想要搜索的元素(name)直接是一个属性。但在第二种情况下,我想要搜索的元素在json中。那么在这种情况下,我如何为filtered数组赋值??

我做过这样的事......

        for element in orderDetails {

            if let jsonStr = element.value(forKey: "customerJson") as? String {

                let data = jsonStr.data(using: String.Encoding.utf8, allowLossyConversion: false)!

                do {
                    if let json = try JSONSerialization.jsonObject(with: data) as? [String: Any] {

                    for item in json {
                        if item.key == "first_name" {
                            var customerName = (item.value as? String)! //HERE I GET THE CUSTOMER NAME. BUT HOW CAN I ASSIGN IT TO 'filtered' ARRAY FOR THE PURPOSE OF SEARCHING, I CAN'T FIGURE OUT. 
                        }
                    }

                    }

                } catch let error as NSError {
                    print("Failed to load: \(error.localizedDescription)")
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

只需要在if item.key == "first_name"内完成这项工作......

filterArr = self.orderDetails.filter({( data : Order) -> Bool in
      return (data.customerJson!.lowercased().contains(searchText.lowercased()))
 })