Swift에서 NSPredicate를 사용하여 배열을 필터링하고 있습니다. 문제는 iOS 11 (Xcode 9/w Swift 4)으로 업데이트 한 후입니다. 필터 라인에서 충돌이 계속 발생합니다. > '[valueForUndefinedKey :] :.이 클래스는 키가 아닌> 코딩 호환 키 이름 값'응용 프로그램을 종료Swift 배열 충돌에 대한 iOS 11 NSPredicate 검색 - NSUnknownKeyException
내가의 배열을 가지고있는 클래스의 예입니다 iOS 11으로 업데이트 되었습니까?인해 캐치되지 않는 예외 'NSUnknownKeyException', 이유에 대한 다음은 충돌 로그입니다
let myArray = [Model(name: "Jason"), Model(name: "Brian")] let predicate = NSPredicate(format: "name == 'Jason'") let filteredArray = myArray.filter { predicate.evaluate(with: $0)}
질문은 왜 지금 충돌한다 : 여기
가 충돌되는 코드입니다 : 여기final class Model: NSObject { let name: String init(name: String) { self.name = name } }
감사합니다. 누군가가 술어에 사용되는 속성이 더 많은 모델을 가지고 있고 (내가했던 것처럼)이 문제를 얻는 경우. 속성 선언 전에 @objc를 추가하면됩니다. 예를 들어,'@objc var name : String'과 같이, 긴 switch-case를 피할 수 있습니다. – Uros19
니스, 나는 이것을 나의 대답에 추가 할 것이다! 감사. 이 방법으로 문제를 해결할 때 고려해야 할 사항은 '@ objc'로 속성에 직접 주석을 추가하는 이유에 대해 약간의 명료성을 잃어 버리는 것입니다. –