2015-12-12 13 views
5

Bir kayıt kümesini kaydetmek için CKModifyRecordsOperation kullanıyorum ve internet bağlantım varsa her şey iyi çalışıyor ve tamamlama bloğu çağrılıyor. Ancak bağlantım olmadığında, tamamlama bloğu çağrılmıyor ve işlemlerimin başarısız olduğu konusunda hiçbir bilgi alamıyorum.CKModifyRecordsOperation modifyRecordsCompletionBlock çağrılmıyor

ben tamamlama bloğunda

modifyOperations.modifyRecordsCompletionBlock = ^(NSArray *savedRecords, NSArray *deletedRecordIDs, NSError *error) 
{ 
    if(error){ 
     NSLog(@"Error: %@", error.localizedDescription); 
    } 

    item.creatorRecordId = record.recordID; 
}; 

Aşağıdaki kodu kullanıyorum ve operasyon örneğin başarısız olursa o zaman ben bir bilgi alabilirim nasıl

[self.publicDB addOperation:modifyOperations]; 

Herhangi fikirleri kullanarak işlemi gerçekleştirirken ediyorum İnternet bağlantısının olmadığı durumda?

+1

Son zamanlarda bununla uğraşıyorum. İnternet yoksa, işlem başarısız olur. Sadece bekler. İnternet bağlantınız döndüğünde, işlem tamamlanacaktır. Bir seçenek (uygulayacağım) işlemi veritabanına eklemeden önce bir Erişilebilirlik kontrolü yapmaktı. – rmaddy

+0

Evet, ben de düşünüyorum. Ancak bu çözümle ilgili bir sorun olabilir, eğer bağlantı eğer ulaşılabilirlik için kontrol edildikten ve operasyon yapmadan önce düşerse ... Zamanlayıcıyı uygulamayı düşünüyorum ve bir süre sonra operasyonun yanmaması durumunda ulaşılabilirliği kontrol etmeliyim. Ama sonra yine bu zamanın ne olması gerektiği bir soru var. – Wojtek

cevap

6

CloudKit işlemleri, varsayılan olarak NSQualityOfServiceUtility olarak ayarlanmış qualityOfService özelliğine sahiptir.

NSQualityOfServiceUtility veya NSQualityOfServiceBackground'u kullanan işlemler, discretionary network requests kullanılarak işaretlenebilir. Sistem ağ bağlantısı zayıfsa, isteğe bağlı ağ isteklerini tutabilir, böylece koşullar iyileşene ve sistem isteği gönderene kadar sunucudan yanıt alamayabilirsiniz.

Talebinizin hemen tüm durumlarda gönderilmesini isterseniz, CKOperation.qualityOfService değerini NSQualityOfServiceUserInitiated veya NSQualityOfServiceUserInteractive olarak ayarlayın.

İlgili konular