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?