Sök…
Anmärkningar
Stödda typer
- NSData
- NSDate (Datum)
- NSNummer (Int / Dubbel)
- NSString (String)
- NSArray (Array)
- CLLocation
- CKReference
- CKAsset
Registrerar app för användning med CloudKit
Vad du behöver är att få en rättighetsfil så att appen kan komma åt din iCloud och skriva poster med CloudKit.
Följ stegen för att ge åtkomst till iCloud från din app:
1- Välj projektet i Project Navigator och öppna sedan fliken Allmänt.
2- I avsnittet Identitet ställer du in ditt Apple-ID för utvecklare till rullgardinsmenyn Team. (Om det inte är tillgängligt lägger du till det i Xcode-menyn -> Inställningar -> Konton.
3- Gå till fliken Funktioner i projektegenskaperna och slå på iCloud. Välj sedan "Key-Value Storage" och "CloudKit".
4- Se till att dessa objekt är markerade:
Om alla objekt är markerade är din app redo att använda CloudKit.
Använda CloudKit Dashboard
Alla poster som skapas med hjälp av CloudKit-relaterad kod kan förhandsgranskas, redigeras och till och med tas bort i CloudKit Dashboard. För att komma åt CloudKit Dashboard, gå hit .
Det finns flera delar i instrumentpanelen:
- Spela in typer (som kommer att diskuteras senare)
- Säkerhetsroller (där du kan ställa in databaser som offentliga eller privata)
- Prenumerationstyper (som din app kan registrera för Apple Push Notifications (APNs) för att meddela dig när en post ändras)
Spela in typer
Här får du en lista över alla befintliga posttyper i appen. När du först öppnar CloudKit Dashboard för en app finns det en posttyp som heter användare där, som du kan använda den eller bara ta bort den och använda din egen.
På den här sidan kan du skriva dina data manuellt. Naturligtvis är det i de flesta fall meningslöst, eftersom iOS SDK kan hantera det på ett bättre sätt än instrumentpanelen, men funktionaliteten är också där om du föredrar. Den mest använda denna sida är för förhandsgranskningstyper.
Sparar data i CloudKit
För att spara datum till CloudKit måste vi göra:
- En
CKRecordID
(nyckeln till din unika post) - Ett
CKRecord
(som inkluderar data)
Att skapa en inspelningsnyckel
För att säkerställa att varje ny postidentifierare är unik använder vi den aktuella tidsstämpeln , som är unik. Vi får tidsstämpeln med NSDate
metod timeIntervalSinceReferenceDate()
. Det är i form av ###. ### (# är siffror), som vi kommer att använda heltalets del. För att göra detta delar vi strängen:
Snabb
let timestamp = String(format: "%f", NSDate.timeIntervalSinceReferenceDate())
let timestampParts = timestamp.componentsSeparatedByString(".")
let recordID = CKRecordID(recordName: timestampParts[0])
Gör posten
För att göra posten bör vi ange posttypen (förklaras i Använda CloudKit Dashboard) som användare, ID som det vi gjorde just nu och data. Här lägger vi till en exempeltext, en bild och aktuellt datum till posten:
Snabb
let record = CKRecord(recordType: "Users", recordID: recordID)
record.setObject("Some Text", forKey: "text")
record.setObject(CKAsset(fileURL: someValidImageURL), forKey: "image")
record.setObject(NSDate(), forKey: "date")
Objective-C
CKRecord *record = [[CKRecord alloc] initWithRecordType: "Users" recordID: recordID];
[record setObject: "Some Text" forKey: "text"];
[record setObject: [CKAsset assetWithFileURL: someValidImageURL] forKey: "image"];
[record setObject: [[NSDate alloc] init] forKey: "date"];
Notera
Här har vi inte lagt till
UIImage
direkt till posten, eftersom som nämnts i anmärkningar stöds inte bildformatet direkt i CloudKit, så vi har konverteratUIImage
tillCKAsset
.
Åtkomst till behållaren
Snabb
let container = CKContainer.defaultContainer()
let database = container.privateCloudDatabase // or container.publicCloudDatabase
Sparar posten i CloudKit-databasen
Snabb
database.saveRecord(record, completionHandler: { (_, error) -> Void in
print(error ?? "")
})