2014-11-01 12 views
6

Sto cercando di salvare semplicemente un record a un database privato gli utenti, ma quando ho eseguito privateDB.saveRecord() ottengo un errore che diceCloudkit dà l'errore quando si cerca di salvare un record

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

Questo account è in grado per accedere al dashboard del cloudkit in modo che sia uno sviluppatore dell'applicazione. Quali altri problemi potrebbero causare questo? Qualsiasi aiuto sarebbe molto apprezzato, sono rimasto bloccato per così tanto tempo.

Ecco il mio codice:

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

risposta

16

ho trovato non ho potuto connettersi a CloudKit a tutti fino a quando aggiorno a unità iCloud; nel mio caso sono riuscito a farlo nel simulatore. Inoltre, non è possibile accedere a iCloud sul simulatore se hai impostato l'autenticazione a 2 fattori, a quanto pare.

+0

Non posso votare perché non ho abbastanza punti :(Ma grazie mille per averlo risolto ... Non capisco perché questo sarebbe il problema ma grazie mille! – Diericx

2

Stavo ricevendo questo errore cercando di caricare un elenco di record nel database tutto in una volta. Quando l'ho fatto uno alla volta (aspettando la risposta prima di caricare il prossimo) il problema è andato via.

2

Era accaduta la stessa cosa perché stavo cercando di aggiungere molti record da un MutableArray. Ho dovuto effettuare chiamate ricorsive a saveRecord per risolvere questo problema.

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

e poi nel metodo 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

Per me mi stava chiamando "salvare New dati" e "recuperare i dati" e "aggiornamento recuperati i dati" con lo stesso metodo. Una volta rimosso "salva nuovi dati" tutto funziona di nuovo ok.

1

Ho ricevuto questo errore quando ho provato a creare un CKRecordZone personalizzato e salvare un nuovo CKRecord contemporaneamente. Ho risolto il problema inserendo il salvataggio di CKRecord nel blocco di completamento del metodo CKModifyRecordZone.

0

Ho avuto lo stesso problema con il simulatore fino a quando ho fatto qualcosa di simile:

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

Speranza che aiuta.

Problemi correlati