为啥我不能从 Xcode 或 CloudKit Dashboard 查询 CloudKit?

Posted

技术标签:

【中文标题】为啥我不能从 Xcode 或 CloudKit Dashboard 查询 CloudKit?【英文标题】:Why can't I query CloudKit from Xcode or CloudKit Dashboard?为什么我不能从 Xcode 或 CloudKit Dashboard 查询 CloudKit? 【发布时间】:2019-02-05 10:03:34 【问题描述】:

当我尝试从 CloudKit 仪表板查询 CloudKit 时,我收到一条错误消息:

查询“条目”类型时出现问题。

找不到验证方法

当我尝试从 Xcode 中的代码查询相同的记录时,我从查询操作的 queryCompletionBlock 属性中的错误对象中收到错误消息:

操作无法完成。 (CKErrorDomain 错误 4。)

在哪里可以找到错误 4 的含义?

这是在调试窗口中打印错误消息的代码:

let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: DatabaseNameStrings.recordTypeEntry, predicate: predicate) // DatabaseNameStrings.recordTypeEntry = "Entry"
let sortDescriptor = NSSortDescriptor(key: DatabaseNameStrings.recordFieldKeyCreationDate, ascending: true)
query.sortDescriptors = [sortDescriptor]
let queryOperation = CKQueryOperation(query: query)
queryOperation.database = container.privateCloudDatabase
queryOperation.desiredKeys = [DatabaseNameStrings.fieldNameText] // DatabaseNameStrings.fieldNameText = "text"
queryOperation.recordFetchedBlock = 
    (record: CKRecord) in
    let entry = Entry(ckRecord: record)
    self.entries.append(entry)

queryOperation.queryCompletionBlock = 
    (cursor: CKQueryOperation.Cursor?, error: Error?) in
    if let error = error 
        print(error.localizedDescription) // The operation couldn’t be completed. (CKErrorDomain error 4.)
     else 
        DispatchQueue.main.async 
            self.tableView.reloadData()
        
        if let cursor = cursor 
            let innerQueryOperation = CKQueryOperation(cursor: cursor)
            innerQueryOperation.desiredKeys = queryOperation.desiredKeys
            innerQueryOperation.recordFetchedBlock = queryOperation.recordFetchedBlock
            innerQueryOperation.queryCompletionBlock = queryOperation.queryCompletionBlock
            queryOperationQueue.addOperation(queryOperation)
         else 
            DispatchQueue.main.async 
                self.tableView.reloadData()
            
        
    

queryOperationQueue.addOperation(queryOperation)

【问题讨论】:

developer.apple.com/documentation/cloudkit/ckerrorcode/… ?同时打印error,而不仅仅是error.localizedDescription Xcode 是否使用拥有(或有权访问)CloudKit 容器的同一个 Apple ID 登录? @CliftonLabrum 是的。其实我觉得没关系。重要的是模拟器或设备使用与 CloudKit 容器相同的 Apple ID 登录。 【参考方案1】:

它开始工作了,我没有做任何修复它。

【讨论】:

以上是关于为啥我不能从 Xcode 或 CloudKit Dashboard 查询 CloudKit?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode/Cocoapods 为啥我不能从 Pod 实现 Swift 协议?

CloudKit 权利缺失

为啥我的应用在使用 cloudkit 时会崩溃?

部署到生产:为啥 CloudKit 删除订阅类型?

为啥在 CloudKit 中请求许可返回可能未完成?

xcode4.6 build.a文件成功后,.a文件不能从白色变成 红色是为啥啊?