CKModifyRecordsOperation modifyRecordsCompletionBlock未被调用

时间:2015-12-12 12:22:14

标签: ios objective-c cloudkit ckmodifyrecordsoperation

我使用[self.publicDB addOperation:modifyOperations]; 来保存一组记录,如果我有互联网连接,一切正常并且正在调用完成块。但是,如果我没有连接,则不会调用完成块,并且我无法获得有关我的操作失败的任何信息。

我在完成块中使用以下代码

SEVERE:   Exception while deploying the app [CRUBWEB] : Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Deployment of PersistenceUnit [CRUBWEBPU] failed. Close all factories for this PersistenceUnit.
Internal Exception: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Problem compiling [SELECT e FROM custt e]. 
[14, 19] The abstract schema type 'custt' is unknown.

然后我使用

执行操作
void setup(){
  Object[] array = new Object[3];
  array[0] = true;
  array[1] = 1.0;
  array[2] = "hello";

  if(array[0] instanceof Boolean){
    println((Boolean)array[0]);
  }
}

如果操作失败,如何在没有互联网连接的情况下如何获取信息?

1 个答案:

答案 0 :(得分:6)

默认情况下,CloudKit操作的qualityOfService属性设置为NSQualityOfServiceUtility

使用NSQualityOfServiceUtilityNSQualityOfServiceBackground的操作可能会被标记为使用discretionary network requests。如果网络连接较差,系统可以保留随意的网络请求,因此在条件改善并且系统发送请求之前,您可能无法从服务器获得响应。

如果您希望在所有情况下立即发送请求,请将CKOperation.qualityOfService设置为NSQualityOfServiceUserInitiatedNSQualityOfServiceUserInteractive