Szukaj…
Uwagi
Obsługiwane typy
- NSData
- NSDate (data)
- NSNumber (Int / Double)
- NSString (String)
- NSArray (Array)
- CLLokalizacja
- CKReference
- CKAsset
Rejestracja aplikacji do użytku z CloudKit
Musisz uzyskać plik uprawnień, aby aplikacja mogła uzyskać dostęp do iCloud i zapisywać rekordy za pomocą CloudKit.
Postępuj zgodnie z instrukcjami, aby przyznać dostęp do iCloud z aplikacji:
1- Wybierz projekt w Nawigatorze projektu, a następnie otwórz kartę Ogólne.
2- W sekcji Tożsamość ustaw programistyczny identyfikator Apple ID w menu rozwijanym Zespół. (Jeśli nie jest dostępny, dodaj go w menu Xcode -> Preferencje -> Konta.
3- Przejdź do zakładki Możliwości we właściwościach projektu i włącz iCloud. Następnie wybierz „Key-Value Storage” i „CloudKit”.
4- Upewnij się, że te elementy są zaznaczone:
Jeśli wszystkie elementy są zaznaczone, aplikacja jest gotowa do użycia CloudKit.
Korzystanie z CloudKit Dashboard
Wszystkie rekordy tworzone przy użyciu kodu związanego z CloudKit można wyświetlać, edytować, a nawet usuwać w CloudKit Dashboard. Aby uzyskać dostęp do CloudKit Dashboard, przejdź tutaj .
Deska rozdzielcza składa się z kilku części:
- Typy rekordów (które zostaną omówione później)
- Role bezpieczeństwa (w których można ustawić bazy danych jako publiczne lub prywatne)
- Typy subskrypcji (które aplikacja może zarejestrować w celu uzyskania powiadomień push Apple (APN), aby powiadomić Cię o zmianie rekordu)
Rodzaje rekordów
Tutaj masz listę wszystkich istniejących typów rekordów w aplikacji. Po pierwszym otwarciu aplikacji CloudKit Dashboard dla aplikacji istnieje tam typ rekordu o nazwie Użytkownicy, którego można użyć lub po prostu usunąć i użyć własnego.
Na tej stronie możesz ręcznie wpisać swoje dane. Oczywiście w większości przypadków jest to bezcelowe, ponieważ iOS SDK może sobie z tym poradzić znacznie lepiej niż pulpit nawigacyjny, ale funkcjonalność jest dostępna, jeśli wolisz. Najczęściej używa się tej strony do podglądu typów.
Zapisywanie danych do CloudKit
Aby zapisać datę w CloudKit, musimy wykonać:
-
CKRecordID
(klucz unikalnego rekordu) -
CKRecord
(który zawiera dane)
Robienie klucza rekordu
Aby upewnić się, że każdy nowy identyfikator rekordu jest unikalny, używamy aktualnego znacznika czasu , który jest unikalny. Dostajemy timestamp użyciu NSDate
„s metody timeIntervalSinceReferenceDate()
. Ma on postać ###. ### (# są liczbami), w których wykorzystamy część całkowitą. Aby to zrobić, podzieliliśmy ciąg:
Szybki
let timestamp = String(format: "%f", NSDate.timeIntervalSinceReferenceDate())
let timestampParts = timestamp.componentsSeparatedByString(".")
let recordID = CKRecordID(recordName: timestampParts[0])
Nagrywanie
Aby zrobić rekord, powinniśmy określić typ rekordu (wyjaśniony w Korzystanie z CloudKit Dashboard) jako Użytkownicy, identyfikator jako rzecz, którą właśnie stworzyliśmy i dane. Tutaj do rekordu dodamy przykładowy tekst, zdjęcie i bieżącą datę:
Szybki
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")
Cel 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"];
Uwaga
Tutaj nie dodaliśmy
UIImage
bezpośrednio do rekordu, ponieważ, jak wspomniano w uwagach, format obrazu nie jest bezpośrednio obsługiwany w CloudKit, więc przekonwertowaliśmyUIImage
naCKAsset
.
Dostęp do kontenera
Szybki
let container = CKContainer.defaultContainer()
let database = container.privateCloudDatabase // or container.publicCloudDatabase
Zapisywanie rekordów w bazie danych CloudKit
Szybki
database.saveRecord(record, completionHandler: { (_, error) -> Void in
print(error ?? "")
})