Un'introduzione a CloudKit

introduzione

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:

  • fino a 1 PB di asset storage (immagini, file audio, ecc.)
  • fino a 10 TB di archiviazione del database (stringhe, numeri, matrici, ecc.)
  • autenticazione utente iCloud
  • notifiche

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.

Requisiti

Questo tutorial richiede l'esecuzione di Xcode 6+ e un account sviluppatore iOS. Dovrai anche scaricare il progetto iniziale da GitHub.

1. Configurazione del progetto

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.

2. Creazione del tipo di record del bug

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.

Schema

  • Registra i tipi funziona in modo simile a una normale definizione di classe. I record vengono creati come istanze di classe da questi tipi.
  • Ruoli di sicurezza fornire un modo per consentire a diversi utenti di accedere ai dati in modi diversi. Ad esempio, è possibile utilizzare un ruolo di sicurezza per consentire solo agli utenti a livello di amministratore di leggere e scrivere i permessi per i dati.
  • Tipi di abbonamento sono utilizzati per gestire i diversi abbonamenti della tua app se questi sono stati implementati.

Dati pubblici

  • Record dell'utente funzionano come i registri normali, tranne per il fatto che sono specificamente collegati al utenti tipo di registrazione, che non può essere cancellato.
  • Zona di Default è dove verranno memorizzati tutti i tuoi record pubblici e altri dati.

Dati privati

  • Zona di Default funziona esattamente come la zona di default pubblica, tranne per il fatto che è accessibile solo all'utente che ha effettuato l'accesso.

Admin

  • Squadra dove puoi vedere altri sviluppatori che collaborano al progetto e modificarne le autorizzazioni.
  • Distribuzione dove è possibile visualizzare le modifiche che verranno apportate allo schemaarticoli quando il tuo progetto entra in un ambiente di produzione.

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.

3. Creazione di record in CloudKit Dashboard

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 Titolo i campi.

Clic Salvare in basso a destra per creare il record. Vedrai che al tuo record è stato assegnato un record univoco IDCreato 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.

4. Caricamento record

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.

  • Innanzitutto, otteniamo un riferimento al contenitore predefinito per la tua applicazione. Questo contenitore contiene i tipi di record e i record che abbiamo creato nel dashboard di CloudKit. Puoi creare più contenitori con un identificativo univoco nel Target Inspector> Funzionalità.
  • In secondo luogo, otteniamo un riferimento al database pubblico del contenitore. Il formato è lo stesso per il database privato.
  • Quindi creiamo una query per il insetto registrare il tipo usando un 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.
  • Successivamente, diciamo al database di eseguire la query, che attiva una richiesta asincrona. Quando la richiesta è completata, viene eseguito il blocco di completamento, che ci consegna a risultati array e an errore oggetto.
  • Se la 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.

5. Creazione di record

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

6. Eliminazione di record

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.

Conclusione

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.