首页 > 解决方案 > 根据json中的值进行搜索

问题描述

我的 coredata 模型中有一个属性,我name可以在此基础上进行搜索...

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

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

但是对于另一种观点,还有另一个实体具有一个名为 的属性customerJson。这个jsoncustomerName里面有我想要搜索的基础。

在我首先提到的场景中,我要搜索的元素(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)")
                }
            }
        }

标签: iosswiftuisearchbar

解决方案


简单地说,这必须在内部完成if item.key == "first_name"并且它起作用了......

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

推荐阅读