2014-09-29 17 views
7

çalışmaz:CloudKit abonelik bazen

NSPredicate *truePredicate = [NSPredicate predicateWithValue:YES]; 
    CKSubscription *itemSubscription = [[CKSubscription alloc] initWithRecordType:RecordType 
                     predicate:truePredicate 
                      options:CKSubscriptionOptionsFiresOnRecordCreation | CKSubscriptionOptionsFiresOnRecordUpdate | CKSubscriptionOptionsFiresOnRecordDeletion]; 


    CKNotificationInfo *notification = [[CKNotificationInfo alloc] init]; 
    notification.alertBody = @"Item Added/Updated/Deleted!"; 
    itemSubscription.notificationInfo = notification; 

    [self.publicDatabase saveSubscription:itemSubscription completionHandler:^(CKSubscription *subscription, NSError *error) { 
     if (error) { 
      // In your app, handle this error appropriately. 
      NSLog(@"An error occured in %@: %@", NSStringFromSelector(_cmd), error); 
     } else { 

      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
      [defaults setObject:subscription.subscriptionID forKey:kSubscriptionID]; 
      [defaults synchronize]; 
     } 
    }]; 
Bazen bu hatayı alabilirsiniz

:

CKError 0x17558460: "Sunucu Reddedildi İsteği" (15/2000); sunucu iletisi = "Dahili sunucu hatası"; uuid = B89DE7A4-9D22-42BC-9CD4-4330F3FE04EF; kap, J = "iCloud.com.app.testApp"

veya

CKError 0x14fb3510: (6/2022) "Hizmet kullanılamaz"; server message = "schema yüklenemedi, CAS başarısız oldu"; uuid = F562D1AD-B40E-4842-A5EA-2A5F800C18F2; container ID = "iCloud.com.app.testApp"

Bunu nasıl düzelteceğini bilen var mı? Kodumla bir şey yapabilir miyim? Bu Apple sorunu mu ve ben hiçbir şey yapamam? Teşekkürler.

+0

İlk hatayı daha önce birkaç saatliğine birden göründüm ve bundan sonra gittim. Bu Apple'ın sunucusunda sorun oldu. Ama sorun ortadan kalkmazsa, o zaman muhtemelen sizindir. İkinci hata için – honcheng

+0

, abone olmadan önce kayıt türünü zaten oluşturdunuz mu? – honcheng

+0

evet, kayıt türüm var. –

cevap

1

Ben de aynı problemi yaşadım. Konteynırları tamamen değiştirdim (goto proje hedefi -> Yetenekler -> Özel konteynırları belirle -> yeni bir kapsayıcı kimliği girin). Sonra mükemmel çalıştı.

+0

Bütün işi varsayılan kapsayıcıda mı düşünüyorsunuz? –

+8

Ne sorduğundan emin değilim. – ninjaneer

3

Kısa bir süre önce benzer bir hatayla karşılaştım ve CloudKit'i projenin yeteneklerinde değiştirerek çözebiliyordum. CloudKit iznini sıfırladıktan sonra, hepsi iyi çalışıyor gibi görünüyordu.

+0

Aynı sorunu yaşıyordum ve yeni bir konteyner bunu düzeltmezken, bu öneriyi düzeltmek için ortaya çıktı. Ancak, sorun birkaç kez geri geldi. Temiz bir Xcode projesi oluşturmayı deneyebilirim. – coping

+0

Bu, sunucuyla eşleşmeyen şema hakkında biraz benzer bir CKInternalErrorDomain şikayetinde de bulundu. – Thunk

1

Tam hatam oldu: "Sunucu Reddedildi İsteği" (15/2000); server message = "Dahili sunucu hatası" CKModifySubscriptionsOperation sonucu.

iPad ile aboneliği test eden garip bir şeydi. Ancak, iPhone’un aboneliği işe yaramadı.

1- eski biçimi (çalışmıyor)

1-1:

NSPredicate biçimini değiştirerek Sabit

let yüklemi = NSPredicate (format: "hızı> = 0")

1-2:

x = 0 olsun! NSNumber

let yüklemi = NSPredicate (biçim "oranı> =", x)

2- Yeni yüklem biçimi (sabit sayı):

let yüklemi = NSPredicate (biçim "oranı> = ", NSNumber (integerLiteral: 0))

+0

Soru, Objective-C'yi sormaktı. Cevabınızı gözden geçirir misiniz? – Jerry