我正在使用NSPredicate在Swift中過濾數組。問題是更新到iOS 11(Xcode 9/w Swift 4)之後,我不斷收到過濾器行的崩潰。這裏是崩潰日誌:iOS 11在Swift數組崩潰時進行Nspredicate搜索 - NSUnknownKeyException
終止應用程序由於未捕獲的異常「NSUnknownKeyException」,原因是:>「[valueForUndefinedKey:]:這個類是不鍵>值的鍵名順應編碼-」
下面是類的例子,我有一個數組:
final class Model: NSObject {
let name: String
init(name: String) {
self.name = name
}
}
這裏是崩潰的代碼:
let myArray = [Model(name: "Jason"), Model(name: "Brian")]
let predicate = NSPredicate(format: "name == 'Jason'")
let filteredArray = myArray.filter { predicate.evaluate(with: $0)}
問題是,這是爲什麼現在崩潰我更新到iOS 11?
感謝您的支持。如果有人有更多的屬性用於謂詞並得到這個問題(像我一樣)。您可以在屬性聲明之前添加@objc。例如'@objc var name:String',這樣可以避免長時間切換。 – Uros19
不錯,我會添加這個到我的答案!謝謝。 以這種方式解決問題的一個小問題是,爲了直接使用'@ objc'註釋屬性,您會失去一點清晰度。 –