How do I fetch CloudKit records in watchOS app?

Viewed 99

so far I simply use CloudKit to fetch records from iCloud server with my iOS app;) But now I need to do the same for my watchOS app. I simply do:

struct TimerView: View {
    @State private var assistant = CloudAssistant.shared
    var body: some View {
        Button {
            print("Image tapped!")
            print("start fetching")
            let predicate = NSPredicate(value: true)
            assistant.fetchThemAllOf(type: "Service", database: assistant.privateDatabase, predicate: predicate) { records, error in
                print(">>>>>>")
                print(error)
                print(">>>>>>")
                print(records)
            }
        }
        .frame(width: 70, height: 70)
    }
}

And this is how my iCloud container looks like:

class CloudAssistant {
    static let shared = CloudAssistant(container: CKContainer(identifier: "iCloud.pl.myidhere"))
    var privateDatabase: CKDatabase {
        return container.privateCloudDatabase
    }
    let container: CKContainer
    @available(iOS 15.0, *)
    @available(iOSApplicationExtension 15.0, *)
    func fetchThemAllOf(type: String, database: CKDatabase, predicate: NSPredicate, completion: @escaping RecordsErrorHandler) {
        let query = CKQuery(recordType: type, predicate: predicate)
        let queryOperation = CKQueryOperation(query: query)
        queryOperation.resultsLimit = 10
        queryOperation.recordMatchedBlock = { recordId, result in
            print("recordMatchedBlock")
            print(result)
        }
        queryOperation.queryResultBlock = { result in
            print("queryResultBlock")
            print(result)
        }
        database.add(queryOperation)
    }
}

But all what is printed on console is:

"Image tapped!"
"start fetching"

...and nothing more. Why?

0 Answers
Related