web-dev-qa-db-ja.com

SwiftのNSFetchRequestの複数のNSPredicates?

現在、NSPredicateが関連付けられた単純なNSFetchRequestがあります。ただし、複数の述語を追加できる方法があることを期待しています。 Objective Cの例を見てきましたが、Swiftの例はありません。

NSPredicateのリストを定義したり、複数のNSPredicateオブジェクトを単一のNSFetchRequestに何らかの方法で追加したりできますか?

ありがとう!

26
ardevd

「NSCompoundPredicate」を使用できます。例えば:

    let converstationKeyPredicate = NSPredicate(format: "conversationKey = %@", conversationKey)
    let messageKeyPredicate = NSPredicate(format: "messageKey = %@", messageKey)
    let andPredicate = NSCompoundPredicate(type: NSCompoundPredicateType.AndPredicateType, subpredicates: [converstationKeyPredicate, messageKeyPredicate])
    request.predicate = andPredicate

「AndPredicateType」または「OrPredicateType」に変更できます

46
Manuel

Swift 4の更新

        let predicateIsNumber = NSPredicate(format: "isStringOrNumber == %@", NSNumber(value: false))
        let predicateIsEnabled = NSPredicate(format: "isEnabled == %@", NSNumber(value: true))
        let andPredicate = NSCompoundPredicate(type: .and, subpredicates: [predicateIsNumber, predicateIsEnabled])

        //check here for the sender of the message
        let fetchRequestSender = NSFetchRequest<NSFetchRequestResult>(entityName: "Keyword")
        fetchRequestSender.predicate = andPredicate

最新の変更Swiftバージョンは:

NSCompoundPredicateType.AndPredicateType replaced by `NSCompoundPredicate.LogicalType.and `

それが役に立てば幸い!!!

ありがとう

15
Harjot Singh