ios - 对于键名称或我在代码中给出的任何值,此类不符合键值编码

标签 ios swift iphone xcode searchbar

我正在尝试使用文本字段作为搜索栏。我添加了所有延迟方法。但是当我开始在文本字段中输入任何字母时,它会崩溃,如下所示:

this class is not key value coding-compliant for the key name.

我的对象包含(即我试图在我的 tabke View 中填充数据)

{
"lo_name" = "yourData"
}

我的代码:

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
    {
        if string.isEmpty
        {
            search = String(search.characters.dropLast())
        }
        else
        {
            search=textField.text!+string
        }

        print(search)
        let predicate=NSPredicate(format: "SELF.lo_name CONTAINS[cd] %@", search)
        let arr=(objectArray as NSArray).filtered(using: predicate)

        if arr.count > 0
        {
            SearchedobjectArray.removeAll(keepingCapacity: true)
            SearchedobjectArray = arr as! [MyLooVC.Objects]
        }
        else
        {
            SearchedobjectArray=objectArray
        }
        looTable.reloadData()
        return true
    }

我尝试像下面这样给予:

1.let predicate=NSPredicate(format: "SELF.loo_name CONTAINS[cd] %@", search)

2.let predicate=NSPredicate(format: "SELF.name CONTAINS[cd] %@", search)

但没有任何事情取得成功。仍然遇到同样的崩溃。有什么解决办法吗?

谢谢

最佳答案

我认为你的数据数组是这样的:

[
 {
  "lo_name" = "yourData1"
 },
 {
  "lo_name" = "yourData2"
 }
]

您应该使用 swift 类型数组而不是 NSArray,因此您的 objectArray 如下所示:

    let objectArray: [[String: Any]]? 
    let objectArray: [[String: String]]? // if all values are string type

你应该像这样过滤数组:

    let arr = objectArray?.filter({ ($0["lo_name"] as? String)?.contains(search) ?? false })

    let arr = objectArray?.filter({ $0["lo_name"]?.contains(search) ?? false }) // It all values in dictionary are string type

对于结构数组:

    struct Objects { 
        var looId : String?
        var looName : String?
    }
    let objectArray = [Objects]()
    // filter it like
    let arr = objectArray.filter({ $0.looName?.contains(search) ?? false })

关于ios - 对于键名称或我在代码中给出的任何值,此类不符合键值编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55514568/

相关文章:

ios - Swift:MPC:浏览器如何才能看到附近的所有广告商?

ios - 仅在一部 iPhone 上出现 VoIP 套接字(流)的奇怪问题

iphone - 为 UITableView 的第一个和最后一个单元格制作圆角

ios - 使用委托(delegate)将数据传回 VC 时属性为 nil

objective-c - 如何将参数传递给基于 Phonegap 构建的应用程序

ios - 修改属性会导致调用方法吗?

ios - 检测旋转时的字体变化

xcode - 在 OS X Tableview 中显示的 Swift 核心数据

ios - 部署目标为 7.0 Objective-C 的 Xcode7.3 的缺点

ios - 将图像数据转换为 MySQL Blob 的 Base64 字符串并将其解码回来