NSPredicate構文に関する問題が発生しました。私はクラスの型でオブジェクトの配列をフィルタリングしたい。Swift 3:NSPredicate(形式:)を使用してオブジェクトを種類/クラスでフィルタリングします
class ClassA: NSObject {}
class ClassB: ClassA {}
class ClassC: ClassA {}
let array: [ClassA] = [ClassB(), ClassC()]
は今、私はClassBの項目でろ過配列を取得するためにNSPredicateを使用したいです。
私がそうするようにブロックを使用することができ、そしてそれはこのようなものになるだろう:
let predicate = NSPredicate { (object, nil) -> Bool in
return object is ClassB
}
これは正当なアプローチですが、私はまたNSPredicate(形式:)とまったく同じことをしたいです。私は失敗し、次を試してみました他の試みの中で
:
let predicate = NSPredicate(format: "self = %@", [ClassB.self])
let predicate = NSPredicate(format: "SELF isKindOfClass: %@", [ClassB.self])
私はそれだけで、構文の問題でなければならないと思いますが、私は結果なしでこれを解決するために時間かけて探しています。
ありがとうございます。
なぜネイティブ・スウィフト方法 'array.filter {$ 0 ClassBのですか}'? – vadian
可能な複製https://stackoverflow.com/q/8065866/2557145 – Palle
@vadianより複雑で動的な複合述語を作成したい – stoikr