gpt4 book ai didi

ios - 返回大集合时 CKQuery 失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:23:50 25 4
gpt4 key购买 nike

我正在使用 CloudKit 在应用程序启动时下载文件。我有一个 CKQuery 可以找到所有尚未下载的文件。当只有一两个下载时它工作正常,但是当有大量下载时,它会失败并出现错误:

\"Server Rejected Request\" (15/2000); server message = \"Internal server error\";

这发生在设备或模拟器上。

相关代码

    let container = CKContainer(identifier: "iCloud.quaritate.Agni")
let publicDB = container.publicCloudDatabase
let privateDB = container.privateCloudDatabase

let predicate = NSPredicate(format: "NOT (%@ CONTAINS Name)", downloadedTitles)
let query = CKQuery(recordType: "List", predicate: predicate)
publicDB.performQuery(query, inZoneWithID: nil, completionHandler: {
results, error in
if error != nil{
//error getting lists
NSLog("\(error?.description)")
}else{
//got lists
}
}

编辑
我已经更新我的代码以使用 CKOperationQueue

func getNewWords(){
let predicate = NSPredicate(format: "NOT (%@ CONTAINS Name)", downloadedTitles)
let query = CKQuery(recordType: "List", predicate: predicate)

let queryOperation = CKQueryOperation(query: query)
let operationQueue = NSOperationQueue()
self.executeQueryOperation(queryOperation, onOperationQueue: operationQueue)
}

func executeQueryOperation(queryOperation: CKQueryOperation, onOperationQueue operationQueue: NSOperationQueue) {
NSLog("Executing query operation")
let container = CKContainer(identifier: "iCloud.quaritate.Agni")
let publicDB = container.publicCloudDatabase

queryOperation.database = publicDB

queryOperation.recordFetchedBlock = {(record:CKRecord) in
self.saveRecord(record)
}

queryOperation.queryCompletionBlock = {(cursor:CKQueryCursor?, error:NSError?)->Void in
guard error == nil else{
NSLog("Query error: \(error?.description)")
return
}
if let queryCursor = cursor { //there are more operations to execute
let queryCursorOperation = CKQueryOperation(cursor: queryCursor)
self.executeQueryOperation(queryCursorOperation, onOperationQueue: operationQueue)
}
}
operationQueue.addOperation(queryOperation)
}

但仍然收到相同的错误。

最佳答案

仔细检查 downloadedTitles 不是空数组。如果在这样的查询中发送空数组,服务器将返回此错误。

这是服务器的错误错误 - 我已经提交了一个错误,以便在这种情况下返回更好的错误消息(或者根本没有结果)。

关于ios - 返回大集合时 CKQuery 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37647185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com