En introduksjon til CloudKit

An Introduksjon til CloudKit
39
Del
10
Del
Dette Cyber ​​mandag Envato Tuts + kurs vil bli redusert å bare $ 3. Ikke gå glipp av.

Innledning

CloudKit er en Apple-rammeverk som ble introdusert sammen med iOS åtte i 2014. Det formål er å gi en enkel løsning for lagring av programmets data i nettskyen ved hjelp iCloud, noe som gjør den tilgjengelig på tvers av enheter. Noen av de viktigste funksjonene i CloudKit inkluderer:

opp til en PB av eiendelen lagring (bilder, lydfiler, etc.)

opptil 10 TB databaselagring (strenger, tall, tabeller, etc.)

iCloud brukerautentisering

varslinger

I denne opplæringen, vil jeg lære deg hvordan du setter opp og samhandle med CloudKit i en iOS søknad ved å opprette en eksempelapplikasjon kalt CloudBug. CloudBug viser en liste over bugs med en tittel og en beskrivelse, som er lagret i iCloud bruker CloudKit.

Krav

Denne opplæringen forutsetter at du kjører Xcode 6+ og har en iOS-utviklerkonto . Du må også laste ned starter prosjektet fra GitHub.

1. Prosjektet Configuration

Det første du må gjøre når du har åpnet starteren prosjektet er i endring målets bunt identifikator og team. Velg CloudBug prosjektet i Prosjekt Navigator og velg CloudBug målet fra listen over mål.

Endre bunten identifikator til en unik streng ved hjelp av omvendt domenenavn tjeneste notasjon. Deretter velger du riktig team for utviklerkontoen din.

Åpne fanen Capabilities på toppen og aktivere iCloud ved veksling bryteren til høyre. Dette vil avsløre iCloud innstillingene for CloudBug målet.

I iCloud-innstillingene, sjekk avkrysningsruten CloudKit å aktivere CloudKit for CloudBug målet.

Bygg og kjøre programmet på en fysisk enhet på i iOS Simulator for å se om alt fungerer uten feil.

2. Opprette Bug Record Type

Klikk på CloudKit Dashboard-knappen nederst i iCloud-innstillingene. Dette vil åpne CloudKit dashbordet i nettleseren din. Når du har logget deg på med utviklerkonto, bør CloudKit dashbordet vises. Før du fortsetter, la meg gå gjennom elementene i sidepanelet til venstre.

Schema

oppføringstyper fungere på samme måte som en vanlig klasse definisjon. Records er opprettet som klasse tilfeller fra disse typene.

  • Sikkerhets Roller gi en måte å la ulike brukere få tilgang til data på forskjellige måter. For eksempel kan en sikkerhetsrolle brukes til å tillate bare admin nivå brukere lese og skrivetilgang for data.
  • abonnementstyper brukes for å håndtere de ulike abonnementene din app har om disse har blitt implementert.
    < .no>
    offentlige data

    Bruker Records fungerer akkurat som vanlige poster, bortsett fra at de er spesielt knyttet til Brukere oppføringstype, som ikke kan slettes.

    Standard Zone er der alle dine offentlige registre og andre data vil bli lagret.

    private data

    Standard Zone fungerer akkurat som den offentlige standardsonen, unntatt at det kun er tilgjengelig for brukeren som er logget på.

    Admin

    Team der du kan vise andre utviklere som samarbeider om prosjektet og redigere sine tillatelser.

    Deployment der du kan se hvilke endringer vil bli gjort til skjema elementer når prosjektet går inn i et produksjonsmiljø.

    I denne opplæringen, er du bare kommer til å være fokus på oppføringstyper og publikum standardsonen. Det neste trinnet er å lage din første posten type.

    Hvis du velger oppføringstyper fra sidelinjen til venstre, vil du legge merke til at en type som heter Brukere som allerede eksisterer.

    La oss lage en ny posttype som heter Bug som skal inneholde en tittel og beskrivelse. Klikk på pluss-knappen øverst for å opprette en ny post type.

    Endre ny rekord typen navn til Bug og legge til to attributter, Tittel og beskrivelse. Gjør begge attributter av typen String med bare Query aksjeindeksopsjonen sjekket. Dette er hva den nye posttype skal se ut.

    Klikk på Lagre nederst til høyre for å skape den Bug posttypen.

    3. Opprette Records i CloudKit Dashboard

    Når du velger standardsonen under Public data, Bug posttypen bør allerede være valgt. Opprett en ny rekord enten ved å klikke på Ny post eller ved å klikke på pluss-knappen på toppen.

    Enter hva du vil for posten sin beskrivelse og
    tittel felt.

    Klikk Lagre lavt i høyre for å lage plata. Du vil se at posten har blitt tildelt en unik rekord
    ID, Laget dato, Endret dato, Laget av identifikator, og Endret av identifikator. Uansett hva posten skriver en rekord er basert på, vil den alltid ha disse fem attributter.

    4. Lasting Records

    Leder tilbake til Xcode og åpen MasterViewController.swift. På toppen, legge en import uttalelse for å importere CloudKit rammeverket.
    Import CloudKit

    Oppdater viewDidLoad metoden ved å legge inn følgende kode.
    La container = CKContainer.defaultContainer () la publicData = container.publicCloudDatabase la query = CKQuery (registreringstype: "Bug", predikatet: NSPredicate (format: "TRUEPREDICATE", argumentArray: null)) publicData.performQuery (spørring, inZoneWithID: null) {resultater, feil i hvis feilen == null {//Det er ingen feil for feil i resultatene {lar newBug = Bug () newBug.title = bug ["Title"] as! String newBug.description = bug ["Beskrivelse"] as! String self.objects.append (newBug) dispatch_async (dispatch_get_main_queue () {() - > Void i self.tableView.reloadData ()})}} else {println (feil)}}

    La oss se hva som skjer i denne kodebiten.

    Først får vi en referanse til standard beholder for søknaden din. Denne beholderen inneholder oppføringstyper og poster vi skapt i CloudKit dashbordet. Du kan opprette flere beholdere med en unik identifikator i Target Inspector > Evner.

  • For det andre får vi en referanse til beholderen offentlige database. Formatet er det samme for private database.
  • Vi deretter opprette en spørring for Bug posten type med en NSPredicate eksempel. Dette predikat kan brukes til å filtrere resultatene av spørringen, for eksempel bare henter poster opprettet eller endret etter en bestemt dato. For dette eksempelet, vi hente hver registrering av typen Bug.
  • Deretter forteller vi databasen til å utføre spørringen, noe som utløser en asynkron forespørsel. Når forespørselen er fullført, ferdigstillelse blokken utføres, levere oss en resultat matrise og en feil objekt.
  • Hvis feilen objektet er null, vi sløyfe gjennom elementene i resultatene matrise og skape en lokal Bug forekomst for hver post. Hver Bug eksempel legges til tabellvisning datakilde og utsikten tabellen er lastet på hovedtråden.

    Bygg og kjøre programmet for å se om den posten vi opprettet i CloudKit dashbordet er lastet inn CloudBug.

    Hvis du ser en feil i Xcode konsoll lik den nedenfor, så sørg for at du er logget på riktig iCloud konto på testenheten. Dette gjelder også hvis du kjører CloudBug i iOS Simulator.

    Tapping bug i visningen tabellen skal presentere detaljvisningen controller med bug beskrivelse.

    5. Opprette Records

    Mens lasting av data fra iCloud gjennom CloudKit kan være svært nyttig, må CloudBug også muligheten til å tillate brukere å opprette nye rekorder. I MasterViewController.swift, legge inn følgende kode til receiveBug (_ :) metode
    la container = CKContainer.defaultContainer () la publicData = container.publicCloudDatabase la record = CKRecord (registreringstype. "Bug") record.setValue (bug.title, Forkey: "Tittel") record.setValue (bug.description, Forkey: "Beskrivelse") publicData.saveRecord (record, completionHandler: {posten, feil i hvis error = nil {println (feil)}!} )

    De to første linjene bør være kjent. Vi får en referanse til standard container, og det offentlige databasen. Vi skaper en CKRecord eksempel kan du sette verdier for tittel og beskrivelse nøkler, og lagre posten til iCloud

    Merk at posten objektet returnert fra iCloud i saveRecord (_:. CompletionHandler :) ferdigstillelse behandlingsprogram omfatter verdiene du satt manuelt i tillegg til de fem standardattributter vi så tidligere i CloudKit dashbordet.

    Bygg og kjøre programmet, og legge inn en ny bug ved å trykke på pluss-knappen øverst til høyre, fylle i tittelen og beskrivelse felt. Pek Post og lagre ny rekord i iCloud i CloudKit database.

    revidere CloudKit dashbordet og naviger til standardsonen under Public data. Hvis alt gikk bra, skal du se to Bug poster i databasen.

    6. Slette Records

    La oss avslutte denne opplæringen ved at brukerne kan slette en feil. Legg inn følgende kode til Tableview (_: commitEditingStyle. ForRowAtIndexPath :) metoden like over objects.removeAtIndex (indexPath.row)
    la container = CKContainer.defaultContainer () la publicData = container.publicCloudDatabase la bug = selvtillit. objekter [indexPath.row] la query = CKQuery (registreringstype: "Bug", predikatet: NSPredicate (format: "(Tittel ==% @) OG (Beskrivelse ==% @)", argumentArray: [bug.title, bug. beskrivelse])) publicData.performQuery (spørring, inZoneWithID: null, completionHandler: {resultater, feil i hvis feilen == null {if results.count > 0 {la posten:! CKRecord = resultater [0] som CKRecord println ( record) publicData.deleteRecordWithID (record.recordID, completionHandler: {registreringsID, feil i hvis error = nil {println (feil!)}})}} else {println (feil)}})

    For å slette en rekord, vi oppretter en spørring som vi gjorde tidligere. For å slette en post, men skaper vi et predikat å matche bug tittel og beskrivelse. Gjennomføringen handler returnerer resultatet av spørringen som vi bruker til å slette tilsvarende post fra det offentlige databasen.

    Bygg og kjøre programmet, og slett en av de feilene enten ved å sveipe til høyre eller ved å trykke på Rediger knappen.

    revidere CloudKit dashbordet for å se om feilen du har valgt har faktisk blitt slettet.

    Konklusjon

    I denne opplæringen, skapte du din første CloudKit søknaden ved å koble din søknad til iCloud. Du lærte å lage oppføringstyper og poster i CloudKit dashbordet, og hvordan du legger dem i programmet. I tillegg til å legge til og slette poster i CloudKit dashbordet, vi også dekket legge til og slette poster med CloudKit rammeverket. Hvis du har kommentarer eller spørsmål, la dem i kommentarfeltet nedenfor.