This question already has an answer here:
Filter array of custom objects in Swift
(1个答案)
去年关门了。
我想过滤我的自定义对象。我的自定义对象外观
class Requestlist: NSObject, NSCoding {
let artist: String
let title: String
let id: String
let type: String

init(artist: String, title: String, id: String, type: String) {
    self.artist = artist
    self.title = title
    self.id = id
    self.type = type
   }
}

但是程序总是因为这个代码而崩溃:
    let textInput = txbSearch.text
    let pred = NSPredicate(format: "ANY artist contains[c] %@ OR title contains[c] %@",textInput!)
    let filteredArray = (Constants.liveRequestlist as NSArray).filtered(using: pred)
    print(filteredArray)

代码在键盘更改上运行,并且必须在键盘输入更改时进行更新,就像实时搜索一样。我还想搜索艺术家或头衔的一部分。(类似于SQL-Like运算符)

最佳答案

两个问题:
Any仅用于关键路径或多个关系。
缺少第二个参数(表示第二个%@)。

let pred = NSPredicate(format: "artist contains[c] %@ OR title contains[c] %@",textInput!, textInput!)

强烈建议使用本地SwiftfilterAPI:
let filteredArray = Constants.liveRequestlist.filter{ $0.artist.range(of: textInput!, options: [.caseInsensitive]) != nil
                                               || $0.title.range(of: textInput!, options: [.caseInsensitive]) != nil }

关于ios - 在Swift 3+中的自定义对象上使用NSPredicate进行过滤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49301927/

10-11 19:48