NSCompoundPredicate и Cloudkit

Я пытаюсь сделать это с помощью составного предиката с использованием Cloudkit, но ошибка XCode говорит "Неожиданное выражение". Кто-нибудь знает, что не так с моим кодом? Цени любую помощь!

let userRef = CKReference(recordID: userID, action: .None)

    let predicateOne = NSPredicate(format: "recordID IN %@ AND user = %@", postIDs, userRef)
// I need all user post's that match the IDs in the array and where the user ID matches the Id in the reference field for the user.

    let predicateTwo = NSPredicate(format: "recordID IN %@", followIDs)
// Or I want recordID's that match the IDs in this array.
// I want records if either predicate condition is met, or both, which is why I'm using an OrPredicateType.

    let predicate = NSCompoundPredicate(type: NSCompoundPredicateType.OrPredicateType, subpredicates: [predicateOne!, predicateTwo!])
    let query = CKQuery(recordType: "UserPosts", predicate: predicate)
    let queryOp = CKQueryOperation(query: query)

1 ответ

Есть несколько правил использования NSPredicate для CloudKit. Для получения дополнительной информации см. Документацию Apple.

Что вы можете попробовать, так это создать предикат:

NSPredicate(format: "recordID IN %@ OR (recordID IN %@ AND user = %@)", followIDs, postIDs, userRef)

Но у меня плохой опыт использования предикатов с операторами AND и OR. Если этот предикат не работает, то я думаю, что единственное решение - выполнить 2 отдельных запроса и затем объединить результат. Вы можете сделать это с помощью функции объединения из библиотеки ExSwift

Другие вопросы по тегам