【问题标题】:Filtering NSMutableArray with NSPredicate使用 NSPredicate 过滤 NSMutableArray
【发布时间】:2014-08-19 18:20:58
【问题描述】:

我目前正在尝试在我的表格视图中实现搜索栏。我希望允许用户按名称搜索他们的所有交易,但是我遇到了问题。

我已经阅读了大量关于此的示例,但是我的应用程序崩溃仍然存在问题。

这是我用于过滤器的代码:

func filterContentForSearchText(searchText: NSString) {
    let resultPredicate = NSPredicate(format: "name contains[c] %@", searchText)
    searchResults = arrayDataPayments.filteredArrayUsingPredicate(resultPredicate)
}

func searchDisplayController(controller: UISearchDisplayController!, shouldReloadTableForSearchString searchString: String!) -> Bool {
    self.filterContentForSearchText(searchString)
    return true
}

arrayDataPayments 被定义为 NSMutableArray 并存储 sting 数据。这是我的 ArrayData 类代码:

import UIKit

var arrayDataPayments: NSMutableArray = []
var arrayDataCost: NSMutableArray = []
var arrayDataDate: NSMutableArray = []
var arrayDataImage: NSMutableArray = []
var arrayDataValue: NSMutableArray = []

class ArrayData: NSObject {

    func paymentsArray() -> NSMutableArray { return arrayDataPayments }

    func costArray() -> NSMutableArray { return arrayDataCost }

    func dateArray() -> NSMutableArray { return arrayDataDate }

    func imageArray() -> NSMutableArray { return arrayDataImage }

    func valueArray() -> NSMutableArray { return arrayDataValue }
}

当前,当表格中至少有一个单元格并且我点击键盘上的一个键以搜索某些内容时,我的应用程序会崩溃。我收到此错误:

由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[<__nscfstring> valueForUndefinedKey:]:此类不符合键名的键值编码。”

【问题讨论】:

    标签: swift


    【解决方案1】:

    我发现了这个问题。这行代码是罪魁祸首:

    let resultPredicate = NSPredicate(format: "name contains[c] %@", searchText)
    

    改成这样就解决了这个问题:

    let resultPredicate = NSPredicate(format: "SELF contains[cd] %@", searchText)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      相关资源
      最近更新 更多