0

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つを組み合わせようとすると、うまくいきません

4

1 に答える 1