2014-11-01 14 views
6

bin ich einfach versuchen, einen Datensatz zu einem Benutzer private Datenbank zu speichern, aber wenn ich privateDB.saveRecord run() Ich erhalte eine Fehlermeldung, dassWolkenjunge gibt Fehler, wenn ein Datensatz zu speichern versuchen

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

Dieses Konto der Lage ist, sich im Cloudkit-Dashboard anzumelden, damit es ein Entwickler für die Anwendung ist. Welche anderen Probleme könnten dies verursachen? Jede Hilfe würde wirklich geschätzt werden, ich war so lange darauf fest.

Hier ist mein Code:

//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() 
    } 
}) 

Antwort

16

Ich fand ich Wolkenjungen überhaupt nicht verbinden konnte, bis ich zu iCloud-Laufwerk aktualisieren; In meinem Fall konnte ich das im Simulator machen. Sie können sich auch nicht in iCloud am Simulator anmelden, wenn Sie die 2-Faktor-Authentifizierung eingerichtet haben.

+0

Ich kann nicht abstimmen, weil ich nicht genug Punkte habe :(Aber vielen Dank das behoben ... Ich verstehe nicht, warum das das Problem wäre, aber vielen Dank! – Diericx

2

Ich bekam diesen Fehler beim Versuch, eine Liste der Datensätze auf einmal in die Datenbank hochzuladen. Als ich es einzeln machte (auf die Antwort wartend, bevor ich die nächste hochladen konnte), ging das Problem weg.

2

Hatte das gleiche passiert, weil ich versucht habe, viele Datensätze aus einem MutableArray hinzuzufügen. Ich musste rekursive Aufrufe von saveRecord durchführen, um dieses Problem zu beheben.

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

und dann in der AddRecord Methode

- (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

Für mich I "speichern Neue Daten" und "Abrufen von Daten" und "Update abgerufenen Daten" in der gleichen Methode rufe. Sobald entfernt "neue Daten speichern" funktioniert alles wieder in Ordnung.

1

Ich habe diesen Fehler erhalten, als ich versuchte, eine benutzerdefinierte CKRecordZone zu erstellen und gleichzeitig einen neuen CKRecord zu speichern. Ich habe das Problem behoben, indem ich den CKRecord-Speicher in den Completion-Block der CKModifyRecordZone-Methode gestellt habe.

0

hatte ich das gleiche Problem mit dem Simulator, bis ich so etwas wie dies tat:

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") 
     } 
    } 

Hoffe, es hilft.