2014-11-01 13 views
6

staram się po prostu zapisać rekordu do bazy danych użytkowników prywatnych, ale gdy uruchamiam privateDB.saveRecord() pojawia się błąd mówiącyCloudkit daje błąd podczas próby zapisania rekordu

Not Authenticated" (9/1002); "CloudKit access was denied by user settings"; Retry after 3.0 seconds>. 

To konto jest w stanie aby zalogować się do panelu kontrolnego Cloudkit, aby był deweloperem aplikacji. Jakie inne problemy mogą to powodować? Każda pomoc byłaby naprawdę doceniona, utknąłem na tym od tak dawna.

Oto mój kod:

//variable instantiation 
container = CKContainer.defaultContainer() 
println(container.containerIdentifier) 
publicDB = container.publicCloudDatabase 
privateDB = container.privateCloudDatabase 

//save record code 
let passRecord = CKRecord(recordType: "Password") 
passRecord.setValue("testytestPow", forKey: "title") 
passRecord.setValue("password02", forKey: "value") 
privateDB.saveRecord(passRecord, completionHandler: { (record, error) -> Void in 
    if (error != nil) { 
     println(error) 
    } else { 
     NSLog("Saved in cloudkit") 
     self.fetchTodos() 
    } 
}) 

Odpowiedz

16

znalazłem nie mógł połączyć się CloudKit w ogóle, dopóki nie upgrade do napędu iCloud; w moim przypadku udało mi się to zrobić w symulatorze. Również nie można zalogować się do iCloud na symulatorze, jeśli wydaje się, że masz 2-czynnikową konfigurację uwierzytelniania.

+0

Nie mogę głosować, ponieważ nie mam wystarczającej liczby punktów :(Ale dziękuję bardzo za naprawienie tego ... Nie rozumiem, dlaczego to byłby problem, ale dziękuję bardzo! – Diericx

2

Otrzymałem ten błąd, próbując jednocześnie załadować listę rekordów do bazy danych. Kiedy robiłem to pojedynczo (czekając na odpowiedź przed załadowaniem kolejnej) problem zniknął.

2

To samo działo się, ponieważ próbowałem dodać wiele rekordów z MutableArray. Musiałem wykonywać wywołania rekursywne do saveRecord, aby naprawić ten problem.

MyObject *obj = [arrayOfObjects ObjectAtIndex:index]; 
[self addRecord]; 

a następnie w metodzie addRecord

- (void) addRecord { 
    // if all objects added, exit recursive method 
    if(index == [arrayOfObjects count]) { 
     return; 
    } 

    MyObject *obj = [arrayOfObjects ObjectAtIndex:index]; 

    [publicDatabase saveRecord:rec completionHander:^(CKRecord *myRec, NSError *error) { 
    if (!error) { 
     index++ 
     [self addRecord]; 

    } 
} 
0

Dla mnie I wołał „zapisz nowe dane” i „pobieranie danych” i „zmiana pobierane dane” w taki sam sposób. Po usunięciu "zapisz nowe dane" wszystko znowu działa poprawnie.

1

Ten błąd wystąpił podczas próby utworzenia niestandardowego CKRecordZone i jednoczesnego zapisania nowego CKRecord. Naprawiłem problem, umieszczając zapis CKRecord w bloku kończącym metodę CKModifyRecordZone.

0

miałem ten sam problem z symulatorem aż zrobiłem coś takiego:

CKContainer.defaultContainer().accountStatusWithCompletionHandler { (accountStat, error) in 
     if (accountStat == .Available) { 
      print("iCloud is available") 
      for wishlist in wl { 
       let wlRecord = CKRecord(recordType: "WishList") 
       wlRecord.setObject(wishlist.type, forKey: "type") 
       wlRecord.setObject(wishlist.term_id, forKey: "term_id") 

       publicDB.saveRecord(wlRecord) { 
        record, error in 
        if error != nil { 
         print(error?.localizedDescription) 
        } else { 
         print(record?.objectForKey("type") as! String + " recorded") 
        } 
       } 
      } 
     } 
     else { 
      print("iCloud is not available") 
     } 
    } 

nadzieję, że to pomaga.

Powiązane problemy