当前位置: 首页 > 面试题库 >

iOS 9 CloudKit:连接到蜂窝网络时查询不返回任何内容

云英才
2023-03-14
问题内容

我正在用xcode 7 beta 5开发一个应用程序。当我在iPhone
6上运行我的应用程序,并且如果我的iPhone以wifi模式工作时,我尝试将其连接到CloudKit,就可以显示我的所有数据。但是,如果我的iPhone以LTE模式工作,则看不到任何数据。有谁知道如何做到这一点?

    func getRecordsFromCloud() {

    lavori = []

    /

    let _cloudContainer = CKContainer.defaultContainer()  
    let publicDatabase = CKContainer.defaultContainer().publicCloudDatabase

    /

    let predicate = NSPredicate(value: true)  
    let query = CKQuery(recordType: "Lavori", predicate: predicate)

    /

    let queryOperation = CKQueryOperation(query: query)

    queryOperation.desiredKeys = ["image","name"]  
    queryOperation.queuePriority = .VeryHigh  
    queryOperation.resultsLimit = 50

    queryOperation.recordFetchedBlock = { (record:CKRecord) -> Void in

        let lavoriRecord = record

        self.lavori.append(lavoriRecord)



    }

    queryOperation.queryCompletionBlock = { (cursor:CKQueryCursor?, error:NSError?) -> Void in

        if (error != nil) {

            print("Failed to get data from iCloud - \(error!.localizedDescription)")

        }  
        else {

            print("Successfully retrieve the data from iCloud")

            dispatch_async(dispatch_get_main_queue(), {  
                self.tableView.reloadData()

            })

        }

    }

    /

    publicDatabase.addOperation(queryOperation)

}

谢谢,Alessio


问题答案:

打开设置应用,找到您的应用,启用“使用移动数据”

更新: 如下所述,添加以下代码行解决了该问题:

queryOperation.qualityOfService = .UserInteractive

起作用的原因一定是时间/负载问题。我最初的猜测是这是由以下行引起的:

queryOperation.queuePriority = .VeryHigh

文档.queuePriority对此指出:您仅应在需要时使用优先级值来对非相关操作的相对优先级进行分类。

文档中.qualityOfService对此进行了说明:此属性的默认值为NSOperationQualityOfServiceBackground,并且应尽可能保留该值。

因此,请尝试同时删除.queuePriority.qualityOfService和,看看是否可以正常使用。

更新2:
显然这是一个CloudKit错误。更多的人有同样的问题。请在https://bugreport.apple.com报告



 类似资料:
  • 蜂窝利用 目前,我们已经知道了如何在头单元上运行代码,前提是你能用USB设备(劫持)来连接汽车或访问车内的Wi-Fi(利用D-BUS漏洞/功能)。最大的问题是,这些入侵方法都要么需要接触到汽车,要么就需要攻击者加入到车上的Wi-Fi热点。 如果能加入到车内的Wi-Fi热点并进行漏洞利用是非常让人激动的,因为这就说明我们已经远程入侵了一辆原装汽车,但是,对我们来说,这其中的前提和限制还是太多了。首先

  • 问题内容: 在Oracle 11g中工作时,我需要在表中存在一个输入值时选择一个与该输入值相对应的数据,而在不存在时选择一个静态默认值。我能找到的最好的方法是编写如下代码: 似乎必须有一些惯用的方法来执行此操作,而这并不依赖于对的奇怪使用,但我找不到它。有谁知道更好的方法吗? 问题答案: 这应该是您所做的工作的简单版本:

  • 问题内容: 我正在尝试使用value从数据库中获取汽车。我尝试调用值为52 的方法,并检查数据库中是否存在值为52 的汽车。为什么不退还给我? 问题答案: 打电话一次,不要两次。您前进到结果的第一行,然后前进到第二行。由于查询未返回两行,因此不会获得第二行。您跳过了想要的行。

  • 我有两张桌子锻炼和练习。我正在尝试使用与我们点击的锻炼匹配的workout_id获取所有锻炼。我做了一个内部联接查询,但它似乎没有返回任何东西。我的查询有问题吗? 我正在使用SQLite创建我的数据库。我已经检查了,以确保练习表中有练习,并且它们有一个workout_id。 2)回到我的WorkoutProvider类中,我将selectionArgs设置为: 并把它传递到我的RawQuery中。

  • 我有一个像这样的mysql表 但是我无法用这个函数检索“成人”和“儿童”的值 错误日志显示变量被正确地传递给函数: 为什么此函数返回?

  • 问题内容: JDK中是否有一个标准的功能接口,该接口什么都不做,什么也不返回?我找不到一个。类似于以下内容: 问题答案: 那么Runnable呢: