我正在为我的姓名文本字段分配名称。
for asd in orderDetails {
if let jsonStr = asd.value(forKey: "customerJson") as? String {
let data = sdf?.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" {
cell.nameLabel.text = item.value as? String //ASSIGNED HERE
}
}
}
} catch let error as NSError {
print("Failed to load: \(error.localizedDescription)")
}
}
}
现在我想根据此名称搜索搜索栏。在直接提到核心数据属性的其他视图中搜索时,我做了类似的工作,但工作正常。
filtered = self.newProdDetails.filter({( data : NewProduct) -> Bool in
return (data.name?.lowercased().contains(searchText.lowercased()))! //Here the entity NewProduct has an attribute name
})
但是在当前场景中,该属性是一个名为customer_json
的属性,它是一个像这样的json字符串。
customer_json={
"mobile_number”:”9876543210”,
"first_name”:”testName”,
"last_name”:”testLastName”,
"seller_id":"93"
}
如何在搜索参数
中提及first_name
答案 0 :(得分:0)
继续使用Data对象甚至JSON字符串作为您的模型是个坏主意。我建议你创建一些Structs,使其符合Codeable协议,这样我就可以轻松使用并轻松转换为任何你想要的JSON。我强烈建议你考虑一下。
JSONSerialization.jsonObject(with:)
将您的数据转换为字典,因此您可以通过密钥访问所需的值,而不是枚举它:
像这样:
if let json = try JSONSerialization.jsonObject(with: data!) as? [String: Any],
let name = json["first_Name"] {
cell.nameLabel.text = name
}
绝对可以以同样的方式访问您的数据:
orderDetails.filter{ asd in
if
let jsonStr = asd.value(forKey: "customerJson") as? String,
let data = sdf?.data(using: String.Encoding.utf8, allowLossyConversion: false)
let json = try JSONSerialization.jsonObject(with: data!) as? [String: Any],
let name = json["first_Name"],
name == cell.nameLabel.text {
return true
} else {
return false
}
}