在 Swift 中的自定义 object 上使用 NSPredicate 进行过滤 3+
Filter with NSPredicate on custom object in Swift 3+
我想过滤我的自定义 object。我的自定义 object 外观
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)
代码在 KeyboardChange 上运行,并且必须在键盘输入像实时搜索一样发生变化时更新。我还想搜索艺术家或标题的一部分。 (类似于 SQL Like 运算符)
两期:
Any
仅用于关键路径或 to-many 关系。
缺少第二个参数(表示第二个%@
)
let pred = NSPredicate(format: "artist contains[c] %@ OR title contains[c] %@",textInput!, textInput!)
强烈推荐使用原生Swift filter
API:
let filteredArray = Constants.liveRequestlist.filter{ [=11=].artist.range(of: textInput!, options: [.caseInsensitive]) != nil
|| [=11=].title.range(of: textInput!, options: [.caseInsensitive]) != nil }
我想过滤我的自定义 object。我的自定义 object 外观
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)
代码在 KeyboardChange 上运行,并且必须在键盘输入像实时搜索一样发生变化时更新。我还想搜索艺术家或标题的一部分。 (类似于 SQL Like 运算符)
两期:
Any
仅用于关键路径或 to-many 关系。缺少第二个参数(表示第二个
%@
)let pred = NSPredicate(format: "artist contains[c] %@ OR title contains[c] %@",textInput!, textInput!)
强烈推荐使用原生Swift filter
API:
let filteredArray = Constants.liveRequestlist.filter{ [=11=].artist.range(of: textInput!, options: [.caseInsensitive]) != nil
|| [=11=].title.range(of: textInput!, options: [.caseInsensitive]) != nil }