CloudKit è un framework Apple che è stato introdotto insieme a iOS 8 nel 2014. Il suo scopo è fornire una soluzione semplice per archiviare i dati dell'applicazione nel cloud utilizzando iCloud, rendendolo disponibile su tutti i dispositivi. Alcune delle funzionalità chiave di CloudKit includono:
In questo tutorial, ti insegnerò come configurare e interagire con CloudKit in un'applicazione iOS creando un'applicazione di esempio chiamata CloudBug. CloudBug mostra un elenco di bug con un titolo e una descrizione, che sono memorizzati in iCloud utilizzando CloudKit.
Questo tutorial richiede l'esecuzione di Xcode 6+ e un account sviluppatore iOS. Dovrai anche scaricare il progetto iniziale da GitHub.
La prima cosa che devi fare dopo aver aperto il progetto iniziale sta cambiando la destinazione identificatore del gruppo e squadra. Seleziona il CloudBug progetto nel Project Navigator e scegli il CloudBug bersaglio dalla lista di obiettivi.
Cambiare il identificatore del gruppo a una stringa univoca utilizzando la notazione inversa del servizio del nome di dominio. Quindi, seleziona il team appropriato per il tuo account sviluppatore.
Apri il funzionalità scheda in alto e abilita iCloud spostando l'interruttore a destra. Questo rivelerà le impostazioni di iCloud per il CloudBug bersaglio.
Nelle impostazioni di iCloud, seleziona la casella di controllo CloudKit abilitare CloudKit per il target CloudBug.
Crea ed esegui l'applicazione su un dispositivo fisico in iOS Simulator per vedere se tutto funziona senza errori.
Clicca il CloudKit Dashboard pulsante nella parte inferiore delle impostazioni di iCloud. Questo aprirà la dashboard di CloudKit nel tuo browser. Dopo aver effettuato l'accesso con il tuo account sviluppatore, dovrebbe apparire la dashboard di CloudKit. Prima di continuare, lascia che ti guidi attraverso gli elementi nella barra laterale a sinistra.
In questo tutorial, ci si concentrerà solo sui tipi di record e sulla zona predefinita pubblica. Il prossimo passo è creare il tuo primo tipo di record.
Se si seleziona Registra i tipi dalla barra laterale a sinistra, noterai che un tipo chiamato utenti esiste già.
Creiamo un nuovo tipo di record chiamato insetto che conterrà un titolo e una descrizione. Fai clic sul pulsante più in alto per creare un nuovo tipo di record.
Cambia il nome del nuovo tipo di record in insetto e aggiungere due attributi, Titolo e Descrizione. Crea entrambi gli attributi di tipo Stringa con solo il domanda opzione indice controllata. Questo è come dovrebbe apparire il nuovo tipo di record.
Clic Salvare in basso a destra per creare il insetto tipo di registrazione.
Quando si seleziona Zona di Default sotto Dati pubblici, il insetto il tipo di registrazione dovrebbe essere già selezionato. Crea un nuovo record facendo clic Nuovo record o facendo clic sul pulsante più in alto.
Inserisci quello che vuoi per il record Descrizione e Titolo i campi.
Clic Salvare in basso a destra per creare il record. Vedrai che al tuo record è stato assegnato un record univoco ID, Creato Data, Modificato Data, Creato da identificatore e Modificato da identificatore. Indipendentemente dal tipo di record su cui è basato un record, avrà sempre questi cinque attributi.
Torna a Xcode e apri MasterViewController.swift. In alto, aggiungi una dichiarazione di importazione per importare il framework CloudKit.
importa CloudKit
Aggiorna il viewDidLoad
metodo aggiungendo il seguente frammento di codice.
let container = CKContainer.defaultContainer () let publicData = container.publicCloudDatabase consente query = CKQuery (recordType: "Bug", predicato: NSPredicate (formato: "TRUEPREDICATE", argumentArray: nil)) publicData.performQuery (query, inZoneWithID: nil) risultati, errore in se errore == nil // Non c'è errore per bug nei risultati let newBug = Bug () newBug.title = bug ["Titolo"] come! String newBug.description = bug ["Descrizione"] come! String self.objects.append (newBug) dispatch_async (dispatch_get_main_queue (), () -> Void in self.tableView.reloadData ()) else println (errore)
Vediamo cosa succede in questo snippet di codice.
NSPredicate
esempio. Questo predicato può essere utilizzato per filtrare i risultati della query, ad esempio, solo recuperando i record creati o modificati dopo una certa data. Per questo esempio, recuperiamo ogni record di tipo insetto.risultati
array e an errore
oggetto.errore
l'oggetto è zero
, passiamo attraverso gli elementi del risultati
array e creare un locale insetto
istanza per ogni record. Ogni insetto
l'istanza viene aggiunta all'origine dati della vista tabella e la vista tabella viene ricaricata sul thread principale.Crea ed esegui la tua applicazione per vedere se il record che abbiamo creato nella dashboard di CloudKit è caricato in CloudBug.
Se vedi un errore nella console di Xcode simile a quello qui sotto, assicurati di aver effettuato l'accesso all'account iCloud corretto sul tuo dispositivo di test. Questo vale anche se stai usando CloudBug in iOS Simulator.
Toccando il bug nella vista tabella dovrebbe presentare il controller della vista dettagli con la descrizione del bug.
Anche se il caricamento dei dati da iCloud tramite CloudKit può essere molto utile, CloudBug ha anche la capacità di consentire agli utenti di creare nuovi record. Nel MasterViewController.swift, aggiungi il seguente snippet di codice al file receiveBug (_ :)
metodo.
let container = CKContainer.defaultContainer () let publicData = container.publicCloudDatabase ha lasciato record = CKRecord (recordType: "Bug") record.setValue (bug.title, forKey: "Title") record.setValue (bug.description, forKey: " Descrizione ") publicData.saveRecord (record, completionHandler: record, errore in se error! = Nil println (errore))
Le prime due linee dovrebbero essere familiari. Otteniamo un riferimento al contenitore predefinito e al database pubblico. Creiamo a CKRecord
esempio, imposta i valori per Titolo e Descrizione tasti e salva il record su iCloud.
Si noti che il disco
oggetto restituito da iCloud nel SaveRecord (_: completionHandler :)
il gestore di completamento include i valori impostati manualmente e i cinque attributi predefiniti che abbiamo visto precedentemente nel dashboard di CloudKit.
Crea ed esegui la tua applicazione e pubblica un nuovo bug toccando il pulsante più in alto a destra, compilando i campi del titolo e della descrizione. Rubinetto Inviare e per salvare il nuovo record in iCloud nel database CloudKit.
Rivisitare il dashboard di CloudKit e navigare verso Zona di Default sotto Dati pubblici. Se tutto è andato bene,dovresti vedere due insetto record nel database.
Completiamo questo tutorial consentendo agli utenti di eliminare un bug. Aggiungi il seguente snippet di codice al file tableView (_: commitEditingStyle: forRowAtIndexPath :)
metodo appena sopra objects.removeAtIndex (indexPath.row)
.
let container = CKContainer.defaultContainer () let publicData = container.publicCloudDatabase lascia bug = self.objects [indexPath.row] let query = CKQuery (recordType: "Bug", predicato: NSPredicate (formato: "(Title ==% @) AND (Description ==% @) ", argumentArray: [bug.title, bug.description])) publicData.performQuery (query, inZoneWithID: nil, completionHandler: risultati, errore in se error == nil if results.count > 0 let record: CKRecord! = Results [0] as! CKRecord println (record) publicData.deleteRecordWithID (record.recordID, completionHandler: recordID, errore in caso di errore! = Nil println (errore)) else println (errore))
Per cancellare un record, creiamo una query come abbiamo fatto in precedenza. Per eliminare un record, tuttavia, creiamo un predicato per abbinare il titolo e la descrizione del bug. Il gestore di completamento restituisce i risultati della query che utilizziamo per eliminare il record corrispondente dal database pubblico.
Costruisci ed esegui l'applicazione ed elimina uno degli errori scorrendo verso destra o toccando il pulsante modificare pulsante.
Rivisita il dashboard di CloudKit per vedere se il bug selezionato è stato effettivamente cancellato.
In questo tutorial, hai creato la tua prima applicazione CloudKit collegando la tua applicazione a iCloud. Hai imparato a creare tipi di record e record nella dashboard di CloudKit e come caricarli nella tua applicazione. Oltre all'aggiunta e all'eliminazione di record nel dashboard di CloudKit, abbiamo anche incluso l'aggiunta e l'eliminazione di record utilizzando il framework CloudKit. Se avete commenti o domande, lasciateli nei commenti qui sotto.