CloudKit 方法调用挂断
CloudKit method call hung up
当应用程序启动时,会发生一些初步过程。有的时候几秒钟就搞定了,有的时候没完没了,但是没报错就挂了。
即在启动客户端总是获取最后一个 serverChangedToken
。有时它只是挂断它没有完成。我说的是生产环境,开发人员工作得很好。所以这条路线被调用,但有时它没有完成。知道为什么吗?我没有收到任何错误,超时。
let fnco = CKFetchNotificationChangesOperation(previousServerChangeToken: nil)
fnco.fetchNotificationChangesCompletionBlock = {newServerChangeToken, error in
if error == nil {
serverChangeToken = newServerChangeToken
dispatch_sync(dispatch_get_main_queue(), {
(colorCodesInUtility.subviews[10] ).hidden = false
})
} else {
Utility.writeMessageToLog("error 4559: \(error!.localizedDescription)")
}
dispatch_semaphore_signal(sema)
}
defaultContainer.addOperation(fnco)
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER)
我知道不建议使用信号量来控制 CloudKit 方法调用的流程。
你觉得最后两行可以互换吗?先dispatch_semaphore_wait
再addOperation
才叫?
奇怪的是,该应用程序适用于 iOS 8,此错误仅出现在 iOS 9.
添加以下代码行可能会解决您的问题:
queryOperation.qualityOfService = .UserInteractive
在 iOS 9 中,Apple 更改了该设置的行为。特别是在使用蜂窝数据时,您可以获得您描述的行为。
.qualityOfService
的文档指出:
这个 属性 的默认值是 NSOperationQualityOfServiceBackground 并且您应该尽可能保留该值。
在我看来,这更像是一个 CloudKit 错误,而不是更改的功能。更多的人有同样的问题。我已经在 https://bugreport.apple.com
上报告了
当应用程序启动时,会发生一些初步过程。有的时候几秒钟就搞定了,有的时候没完没了,但是没报错就挂了。
即在启动客户端总是获取最后一个 serverChangedToken
。有时它只是挂断它没有完成。我说的是生产环境,开发人员工作得很好。所以这条路线被调用,但有时它没有完成。知道为什么吗?我没有收到任何错误,超时。
let fnco = CKFetchNotificationChangesOperation(previousServerChangeToken: nil)
fnco.fetchNotificationChangesCompletionBlock = {newServerChangeToken, error in
if error == nil {
serverChangeToken = newServerChangeToken
dispatch_sync(dispatch_get_main_queue(), {
(colorCodesInUtility.subviews[10] ).hidden = false
})
} else {
Utility.writeMessageToLog("error 4559: \(error!.localizedDescription)")
}
dispatch_semaphore_signal(sema)
}
defaultContainer.addOperation(fnco)
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER)
我知道不建议使用信号量来控制 CloudKit 方法调用的流程。
你觉得最后两行可以互换吗?先dispatch_semaphore_wait
再addOperation
才叫?
奇怪的是,该应用程序适用于 iOS 8,此错误仅出现在 iOS 9.
添加以下代码行可能会解决您的问题:
queryOperation.qualityOfService = .UserInteractive
在 iOS 9 中,Apple 更改了该设置的行为。特别是在使用蜂窝数据时,您可以获得您描述的行为。
.qualityOfService
的文档指出:
这个 属性 的默认值是 NSOperationQualityOfServiceBackground 并且您应该尽可能保留该值。
在我看来,这更像是一个 CloudKit 错误,而不是更改的功能。更多的人有同样的问题。我已经在 https://bugreport.apple.com
上报告了