当应用程序启动时,我使用CloudKit下载文件。我有一个CKQuery,查找所有尚未下载的文件。当只有一两个下载时,它可以正常工作,但是当有一个大的数字时,它会失败并出现错误:
“服务器拒绝请求”(15/2000);服务器消息=\“内部服务器错误”;
这种情况发生在设备或模拟器上。
相关代码
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)
}但仍然会收到同样的错误。
发布于 2016-06-14 23:59:06
重复检查downloadedTitles不是空数组.如果在这样的查询中发送空数组,服务器将返回此错误。
这是来自服务器的错误--我提交了一个错误,希望在本例中返回更好的错误消息(或者根本没有结果)。
发布于 2016-06-11 10:52:00
嗯,这可能实际上是内部错误。我也遇到过CloudKit的错误,并且在苹果开发者论坛上的报告之后被修正了。试试看,苹果公司的开发人员可能会对你的问题做些什么。
https://stackoverflow.com/questions/37647185
复制相似问题