CloudKit er et Apple-rammeverket som ble introdusert sammen med iOS 8 i 2014. Det er meningen å gi en enkel løsning for lagring av søknadens data i skyen ved hjelp av iCloud, slik at den blir tilgjengelig på tvers av enheter. Noen av hovedtrekkene til CloudKit inkluderer:
I denne opplæringen vil jeg lære deg hvordan du konfigurerer og samhandler med CloudKit i et iOS-program ved å lage et eksempelprogram som heter CloudBug. CloudBug viser en liste over feil med en tittel og en beskrivelse, som er lagret i iCloud ved hjelp av CloudKit.
Denne opplæringen krever at du kjører Xcode 6+ og har en iOS-utviklerkonto. Du må også laste ned startprosjektet fra GitHub.
Det første du må gjøre etter å ha åpnet startbildeprosjektet, er å endre målets buntidentifikator og team. Velg CloudBug prosjekt i Prosjektnavigator og velg CloudBug mål fra listen over mål.
Endre buntidentifikator til en unik streng ved hjelp av omvendt domenenavnstjeneste notasjon. Deretter velger du riktig lag for utviklerkontoen din.
Åpne Capabilities fanen øverst og aktivere iCloud ved å bytte bryteren til høyre. Dette vil avsløre iCloud-innstillingene for CloudBug mål.
I iCloud-innstillingene merker du av i boksen merket CloudKit for å aktivere CloudKit for CloudBug-målet.
Bygg og kjør programmet på en fysisk enhet på iOS Simulator for å se om alt fungerer uten feil.
Klikk på CloudKit Dashboard knappen nederst i iCloud-innstillingene. Dette åpner CloudKit dashbordet i nettleseren din. Etter at du logget inn på utviklerkontoen din, burde CloudKit-dashbordet vises. Før du fortsetter, la meg gå deg gjennom elementene i sidefeltet til venstre.
I denne opplæringen vil du bare fokusere på posttyper og den offentlige standardsonen. Det neste trinnet er å opprette din første plate type.
Hvis du velger Opptakstyper fra sidefeltet til venstre, vil du legge merke til at en type som heter brukere eksisterer allerede.
La oss lage en ny opptakstype som heter bug som vil inneholde en tittel og en beskrivelse. Klikk på pluss-knappen øverst for å opprette en ny posttype.
Bytt navn på den nye posttypen til bug og legg til to attributter, Tittel og Beskrivelse. Lag begge attributter av typen string med bare Spørsmål indeks alternativet sjekket. Dette er hva den nye platen skal se ut.
Klikk Lagre nederst til høyre for å opprette bug posttype.
Når du velger Standard sone under Offentlige data, de bug opptakstype bør allerede velges. Opprett en ny post enten ved å klikke Ny rekord eller ved å klikke på pluss-knappen øverst.
Skriv inn hva du vil for posten Beskrivelse og Tittel Enger.
Klikk Lagre nederst til høyre for å lage posten. Du ser at posten din har blitt tildelt en unik post ID, laget Dato, modifisert Dato, Laget av identifikator, og Modifisert av identifikator. Uansett hvilken platetype en plate er basert på, vil den alltid ha disse fem attributter.
Gå tilbake til Xcode og åpne MasterViewController.swift. På toppen legger du til en importoppgave for å importere CloudKit-rammeverket.
importere CloudKit
Oppdater viewDidLoad
metode ved å legge til følgende kodestykke.
la container = CKContainer.defaultContainer () la publicData = container.publicCloudDatabase la query = CKQuery (recordType: "Bug", predikat: NSPredicate (format: "TRUEPREDICATE", argumentArray: null)) publicData.performQuery (spørring, inZoneWithID: null) resultater, feil i hvis feil == nil // Det er ingen feil for feil i resultatene la newBug = Bug () newBug.title = feil ["Tittel"] som! String newBug.description = feil ["Beskrivelse"] som! String self.objects.append (newBug) dispatch_async (dispatch_get_main_queue (), ) -> Feid in self.tableView.reloadData () else println (feil)
La oss se hva som skjer i denne kodestykket.
NSPredicate
forekomst. Dette predikatet kan brukes til å filtrere resultatene av spørringen, for eksempel bare å hente poster opprettet eller endret etter en viss dato. For dette eksempelet henter vi hver type post bug.resultater
array og an feil
gjenstand.feil
objektet er nil
, vi løp gjennom elementene i resultater
array og opprette en lokal bug
forekomst for hver post. Hver bug
forekomst legges til tabellvisningens datakilde, og tabellvisningen oppdateres på hovedtråden.Bygg og kjør applikasjonen din for å se om posten vi opprettet i CloudKit dashbordet er lastet inn i CloudBug.
Hvis du ser en feil i Xcodes konsoll som ligner på den nedenfor, så sørg for at du er logget inn på riktig iCloud-konto på testenheten din. Dette gjelder også hvis du kjører CloudBug i iOS-simulatoren.
Hvis du trykker på feilen i tabellvisningen, bør du vise detaljvisningskontrollen med feilens beskrivelse.
Mens lasting av data fra iCloud gjennom CloudKit kan være svært nyttig, trenger CloudBug også muligheten til å tillate brukere å lage nye poster. I MasterViewController.swift, legg til følgende kodestykke til receiveBug (_ :)
metode.
la container = CKContainer.defaultContainer () la publicData = container.publicCloudDatabase la record = CKRecord (recordType: "Bug") record.setValue (bug.title, forKey: "Title") record.setValue (bug.description, forKey: " Beskrivelse ") publicData.saveRecord (record, completionHandler: post, feil i hvis feil! = Null println (feil))
De to første linjene skal være kjent. Vi får en referanse til standardbeholderen og den offentlige databasen. Vi lager en CKRecord
eksempel, angi verdier for Tittel og Beskrivelse nøkler, og lagre posten til iCloud.
Legg merke til at ta opp
objekt returnert fra iCloud i saveRecord (_: completionHandler :)
ferdigstillingshåndterer inkluderer de verdiene du angir manuelt, samt de fem standardattributtene vi så tidligere i CloudKit-dashbordet.
Bygg og kjør din søknad, og legg inn en ny feil ved å trykke på pluss-knappen øverst til høyre, fyll inn tittel- og beskrivelsesfeltene. Tap Post og å lagre den nye posten i iCloud i CloudKit-databasen.
Gå tilbake til CloudKit dashbordet og naviger til Standard sone under Offentlige data. Hvis alt gikk bra,du bør se to bug poster i databasen.
La oss fullføre denne opplæringen ved å gjøre det mulig for brukerne å slette en feil. Legg til følgende kodestykke til Tableview (_: commitEditingStyle: forRowAtIndexPath :)
metode like over objects.removeAtIndex (indexPath.row)
.
la container = CKContainer.defaultContainer () la publicData = container.publicCloudDatabase la bug = self.objects [indexPath.row] la query = CKQuery (recordType: "Bug", predikat: NSPredicate (format: "(Tittel ==% @) OG (Beskrivelse ==% @) ", argumentArray: [bug.title, bug.description])) PublicData.performQuery (spørring, inZoneWithID: null, completionHandler: resultater, feil i hvis feil == nul hvis results.count > 0 opptak: CKRecord! = Resultater [0] som! CKRecord println (record) publicData.deleteRecordWithID (record.recordID, completionHandler: recordID, feil i hvis feil! = Null println (error) ellers println (feil))
For å slette en post, oppretter vi en spørring som vi gjorde tidligere. For å slette en post, oppretter vi imidlertid et predikat for å matche bugsens tittel og beskrivelse. Fullføringsbehandleren returnerer resultatene av spørringen som vi bruker til å slette tilsvarende post fra den offentlige databasen.
Bygg og kjør programmet, og slett en av feilene enten ved å sveipe til høyre eller ved å trykke på Redigere knapp.
Endre CloudKit-dashbordet for å se om feilen du har valgt, faktisk er slettet.
I denne opplæringen har du opprettet ditt første CloudKit-program ved å koble programmet til iCloud. Du lærte hvordan du lager opptakstyper og -oppføringer i CloudKit-dashbordet, og hvordan du laster dem inn i søknaden din. I tillegg til å legge til og slette poster i CloudKit-dashbordet, dekket vi også å legge til og slette poster ved hjelp av CloudKit-rammeverket. Hvis du har kommentarer eller spørsmål, la dem være i kommentarene nedenfor.