Core Data 内の特定のアイテムを検索しようとしています
ProjectColour エンティティの NSSet を持つエンティティ カラーがあります。ProjectColour エンティティには、Project エンティティである project というフィールドと、fullLeft および partialLeft という 2 つの int フィールドがあります。これには、文字列である drillType というフィールドがあります。
私は、drillType が Square で、fullLeft と partialLeft の両方が 0 より大きいすべてのオブジェクトを試しています。
私はもう試した
if searchedText.lowercased() == "square" {
let predicateNumbers = NSPredicate(format: "ANY projectColours.fullLeft > 0 OR ANY projectColours.partialLeft > 0")
let predicateDrillType = NSPredicate(format: "ANY projectColours.project.drillType == 'Square'")
fetchRequest.predicate = NSCompoundPredicate(type: .and, subpredicates: [predicateNumbers, predicateDrillType])
}
これは、タイプとして Round を検索する場合に機能しますが、正方形を使用すると、間違ったオブジェクトが返されます。つまり、2 つのオブジェクト。1 つは正方形ですが、部分的で完全なものは 0 に等しくなります。
例 3 カラー オブジェクト
- 1
- 2
- 3
3 プロジェクトカラーオブジェクト
- 1位。色 (色にリンク) = 1、全体 = 1、部分 = 1、プロジェクト (プロジェクト エンティティにリンク) - ドリル タイプ = 正方形
- 2番目。色 = 2、全体 = 1、部分 = 1、プロジェクト (プロジェクト エンティティにリンク) - ドリル タイプ = ラウンド
- 3番目。色 (色にリンク) = 1、全体 = 0、部分 = 0、プロジェクト (プロジェクト エンティティにリンク) - ドリル タイプ = 正方形
検索すると、正方形を取得し、3 つすべての結果が返されます。2 番目の Project Color オブジェクトは Round です。
テキストを検索するとき、すべての ProjectColour.project.drillType の Square と ProjectColour.fullLeft > 0 AND ProjectColour.partialLeft > 0 が必要です
fetchRequest.predicate = NSPredicate(format: "ANY projectColours.project.drillType == 'Square'") - Works
fetchRequest.predicate = NSPredicate(format: "ANY projectColours.fullLeft > 0 OR ANY projectColours.partialLeft > 0") - Works
しかし、2つを組み合わせようとすると、うまくいきません