CloudKit Przestrzeń nazw
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud.
Klasy
| Nazwisko | Opis |
|---|---|
| CKAcceptSharesOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKAllowedSharingOptions |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKAsset |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKContainer |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKContainer.Notifications |
Powiadomienia opublikowane przez klasę CKContainer . |
| CKDatabase |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKDatabaseNotification |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKDatabaseOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKDatabaseSubscription |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKDiscoverAllUserIdentitiesOperation |
Operacja, która pobiera wszystkich wykrywalnych użytkowników w książce adresowej systemu. |
| CKDiscoverUserIdentitiesOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKErrorCodeExtensions |
Metody rozszerzenia dla CKErrorCode wyliczenia. |
| CKErrorFields |
Przechowuje stałe błędów używane przez zestaw CloudKit. |
| CKFetchDatabaseChangesOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchNotificationChangesOperation |
Element CKOperation , który pobiera zmiany powiadomień. |
| CKFetchRecordChangesOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchRecordsOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchRecordZoneChangesConfiguration |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchRecordZoneChangesOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchRecordZoneChangesOptions |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchRecordZonesOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchShareMetadataOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchShareParticipantsOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchSubscriptionsOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchWebAuthTokenOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKLocationSortDescriptor |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKMarkNotificationsReadOperation |
Oznacza powiadomienia wypychane jako przeczytane. Zazwyczaj używane przez aplikacje korzystające z powiadomień wypychanych do śledzenia zmian rekordów. |
| CKModifyBadgeOperation |
Element CKOperation , który modyfikuje wskaźnik ikony aplikacji na bieżącym urządzeniu lub na wszystkich urządzeniach użytkownika. |
| CKModifyRecordsOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKModifyRecordZonesOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKModifySubscriptionsOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKNotification |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKNotificationID |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKNotificationInfo |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKOperationConfiguration |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKOperationGroup |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKQuery |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKQueryCursor |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKQueryNotification |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKQueryOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKQuerySubscription |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKRecord |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKRecordID |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKRecordValue |
Jest to klasa, która implementuje interfejs ICKRecordValue (dla protokołu Podklasa tej klasy, aby łatwo utworzyć typ, który implementuje protokół. Alternatywą jest utworzenie podklasy , NSObject a następnie zaimplementowanie interfejsu ICKRecordValue. |
| CKRecordZone |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKRecordZoneID |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKRecordZoneNotification |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKRecordZoneSubscription |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKReference |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKServerChangeToken |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKShare |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKShareAccessRequester |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKShareBlockedIdentity |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKShareKeys |
Stałe używane przez różne klasy CloudKit. |
| CKShareMetadata |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKShareParticipant |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKShareRequestAccessOperation |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSubscription |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngine |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineAccountChangeEvent |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineConfiguration |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineDelegate |
Jest to klasa, która implementuje interfejs ICKSyncEngineDelegate (dla protokołu Podklasa tej klasy, aby łatwo utworzyć typ, który implementuje protokół. Alternatywą jest utworzenie podklasy , NSObject a następnie zaimplementowanie interfejsu ICKSyncEngineDelegate. |
| CKSyncEngineDelegate_Extensions |
Metody rozszerzenia interfejsu ICKSyncEngineDelegate do obsługi wszystkich metod z protokołu CKSyncEngineDelegate. |
| CKSyncEngineDidFetchChangesEvent |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineDidFetchRecordZoneChangesEvent |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineDidSendChangesEvent |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineEvent |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineFailedRecordSave |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineFailedZoneSave |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineFetchChangesContext |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineFetchChangesOptions |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineFetchChangesScope |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineFetchedDatabaseChangesEvent |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineFetchedRecordDeletion |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineFetchedRecordZoneChangesEvent |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineFetchedZoneDeletion |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEnginePendingDatabaseChange |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEnginePendingRecordZoneChange |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEnginePendingZoneDelete |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEnginePendingZoneSave |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineRecordZoneChangeBatch |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineSendChangesContext |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineSendChangesOptions |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineSendChangesScope |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineSentDatabaseChangesEvent |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineSentRecordZoneChangesEvent |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineState |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineStateSerialization |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineStateUpdateEvent |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineWillFetchChangesEvent |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineWillFetchRecordZoneChangesEvent |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineWillSendChangesEvent |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSystemSharingUIObserver |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKUserIdentity |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKUserIdentityLookupInfo |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
Interfejsy
| Nazwisko | Opis |
|---|---|
| ICKRecordValue |
Ten interfejs reprezentuje protokół |
| ICKSyncEngineDelegate |
Ten interfejs reprezentuje protokół |
Wyliczenia
| Nazwisko | Opis |
|---|---|
| CKAccountStatus |
Wylicza wartości wskazujące, czy konto użytkownika w usłudze iCloud jest dostępne. |
| CKApplicationPermissions |
Wylicza wartość, która wskazuje, że inni użytkownicy aplikacji mogą odnaleźć bieżącego użytkownika za pomocą adresu e-mail. |
| CKApplicationPermissionStatus |
Wylicza stany, które aplikacja może mieć podczas próby uzyskania uprawnień. |
| CKDatabaseScope |
Wylicza wartości, które określają, czy baza danych jest prywatna, współdzielona, czy publiczna. |
| CKErrorCode |
Wylicza warunki błędów zestawu CloudKit. |
| CKNotificationType |
Wylicza zdarzenia, które mogą generować powiadomienie wypychane. |
| CKOperationGroupTransferSize |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKQueryNotificationReason |
Wylicza trwałe zdarzenia magazynu, które mogą wyzwalać powiadomienia dotyczące cyklu życia danych. |
| CKQuerySubscriptionOptions |
Wylicza czas lub godziny, w których zostanie CKSubscription wyzwolony powiadomienie. |
| CKRecordSavePolicy |
Wylicza zasady, które kontrolują, kiedy lub czy rekord powinien zostać zapisany. |
| CKRecordZoneCapabilities |
Wylicza operacje specjalne, których strefa jest w stanie wykonać. |
| CKRecordZoneEncryptionScope |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKReferenceAction |
Wylicza wartości, które kontrolują, czy odwołanie powinno zostać usunięte po usunięciu rekordu docelowego. |
| CKShareParticipantAcceptanceStatus |
Wylicza odpowiedzi na udział w żądaniach uczestnictwa. |
| CKShareParticipantPermission |
Wylicza uprawnienia udziału użytkowników. |
| CKShareParticipantRole |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKShareParticipantType |
Wylicza typy uczestników udziałów. |
| CKSharingParticipantAccessOption |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSharingParticipantPermissionOption |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSubscriptionType |
Wylicza typy subskrypcji. |
| CKSyncEngineAccountChangeType |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineEventType |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEnginePendingDatabaseChangeType |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEnginePendingRecordZoneChangeType |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineSyncReason |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKSyncEngineZoneDeletionReason |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
Delegaci
| Nazwisko | Opis |
|---|---|
| CKAcceptPerShareCompletionHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKDatabaseDeleteSubscriptionHandler |
Procedura obsługi ukończenia DeleteSubscription(String, CKDatabaseDeleteSubscriptionHandler) dla metody . |
| CKFetchDatabaseChangesCompletionHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchPerShareMetadataHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchRecordChangesHandler |
Deleguj AllChangesReported dla właściwości . |
| CKFetchRecordsCompletedHandler |
Deleguj Completed dla właściwości . |
| CKFetchRecordZoneChangesFetchCompletedHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchRecordZoneChangesRecordWasChangedHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchRecordZoneChangesTokensUpdatedHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchRecordZoneChangesWithIDWasDeletedHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchShareParticipantsOperationPerShareParticipantCompletionHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchSubscriptionsCompleteHandler |
Deleguj Completed dla właściwości . |
| CKFetchSubscriptionsPerSubscriptionCompletionHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKFetchWebAuthTokenOperationHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKMarkNotificationsReadHandler |
Deleguj Completed dla właściwości . |
| CKModifyRecordsOperationHandler |
Deleguj Completed dla właściwości . |
| CKModifyRecordsOperationPerRecordDeleteHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKModifyRecordsOperationPerRecordSaveHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKModifyRecordZonesHandler |
Deleguj Completed dla właściwości . |
| CKModifyRecordZonesPerRecordZoneDeleteHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKModifyRecordZonesPerRecordZoneSaveHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKModifySubscriptionsHandler |
Deleguj Completed dla właściwości . |
| CKModifySubscriptionsPerSubscriptionDeleteHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKModifySubscriptionsPerSubscriptionSaveHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKQueryOperationRecordMatchedHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKRecordZoneCompleteHandler |
Deleguj Completed dla właściwości . |
| CKRecordZonePerRecordZoneCompletionHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKShareRequestAccessOperationPerShareAccessRequestCompletionHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
| CKShareRequestAccessOperationShareRequestAccessCompletionHandler |
Przestrzeń nazw CloudKit zapewnia dostęp do usługi iCloud. |
Uwagi
Przestrzeń nazw CloudKit umożliwia deweloperom aplikacji kontrolowanie przepływu danych między aplikacjami a usługą iCloud. Usługa iCloud udostępnia magazyn danych po stronie serwera, zarówno publiczny, który jest współużytkowany między wszystkimi wystąpieniami aplikacji lub określonych aplikacji i "prywatnymi", które są unikatowe dla jednego użytkownika. Magazyn i transport w usłudze iCloud są szyfrowane i synchronizowane między urządzeniami firmy Apple. Zestaw CloudKit nie zapewnia trwałości po stronie klienta ani buforowania danych — funkcja CloudKit jest dostępna tylko wtedy, gdy użytkownik ma aktywne połączenie internetowe.
Klasa najwyższego poziomu w zestawie CloudKit to CKContainer. Kontener CloudKit (czasami określany w dokumentacji firmy Apple jako "kontener ubiquity") to magazyn informacji identyfikowany z określoną nazwą. Firma Apple zaleca użycie nazwy formularza "iCloud". {reverse DNS}. {appName}", na przykład "iCloud.com.mycompany.MyApp". Deweloperzy muszą tworzyć i konfigurować swoje kontenery przy użyciu pulpitu nawigacyjnego usługi iCloud dostępnego w portalu dla deweloperów firmy Apple.
Pojedynczy element CKContainer może zawierać zarówno dane publiczne, które są współużytkowane przez wszystkie wystąpienia aplikacji (patrz PublicCloudDatabase), jak i dane prywatne, które zawierają dane specyficzne dla użytkownika (zobacz PrivateCloudDatabase). W usłudze iCloud dane publiczne są przechowywane w magazynie aplikacji w usłudze iCloud, podczas gdy dane prywatne są przechowywane w prywatnym magazynie użytkownika w usłudze iCloud. Opinia publiczna CKDatabase jest dostępna dla wszystkich połączonych użytkowników aplikacji, niezależnie od tego, czy są zalogowani do usługi iCloud. Prywatny CKDatabase jest dostępny tylko wtedy, gdy użytkownik jest zalogowany do usługi iCloud. Deweloperzy muszą napisać swój kod, tak aby bezpiecznie reagował na zmiany w stanie logowania lub połączenia użytkownika.
Te obiekty publiczne i prywatne CKDatabase przechowują rekordy ustrukturyzowane. Są one reprezentowane przez CKRecord obiekty. Oprócz danych typu klucz-wartość pola te rekordy mogą przechowywać CKAsset duże obiekty bezpośrednio (pobierane z zawierającym CKRecordelement ) lub jako odwołania (co umożliwia opóźnione pobieranie dużych danych).
Wszystkie CKRecord wystąpienia są przechowywane w obiekcie CKRecordZone. Element CKRecordZone jest podobny do tradycyjnego wystąpienia bazy danych: może zawierać wiele CKRecord magazynów, które mogą się odwoływać do siebie, ale nie do przechowywania w innych CKRecordZone wystąpieniach i CKRecordZone obiektach, mogą służyć do koordynowania operacji niepodzielnych w wielu CKRecord magazynach. Podobieństwo do wystąpienia bazy danych nie jest uniwersalne; na przykład deweloper może użyć FetchRecordAsync polecenia , aby pobrać element CKRecord bezpośrednio z CKDatabase obiektu bez odwoływania się do strefy. Wartość domyślna CKRecordZone jest dostępna za pośrednictwem .DefaultRecordZone Deweloperzy mogą tworzyć dodatkowe strefy przy użyciu pulpitu nawigacyjnego zestawu CloudKit i używać ich do logicznego partycjonowania danych.
Aplikacje CloudKit wymagają profilu aprowizacji z com.apple.developer.icloud-services uprawnieniem i identyfikatorem pakietu specyficznego dla aplikacji (np. "com.mycompany.CloudKitApp"). Deweloperzy muszą tworzyć i konfigurować taki profil aprowizacji.
Poniżej przedstawiono niektóre typowe zastosowania zestawu CloudKit, które działają na pojedynczych rekordach:
//Create
private async Task<CKRecord> StoreInCloudKit (string name, CLLocation loc, int stationId)
{
string containerName = "iCloud.com.example.CKWork";
var container = CKContainer.FromIdentifier (containerName);
CKDatabase publicDatabase = container.PublicCloudDatabase;
var zoneId = CKRecordZone.DefaultRecordZone ().ZoneId;
var recordType = "StationReferences";
var record = new CKRecord (recordType);
record ["Name"] = new NSString (name);
record ["Position"] = loc;
record ["StationID"] = new NSNumber (stationId);
var storedRecord = await publicDatabase.SaveRecordAsync (record);
return storedRecord;
}
//Retrieve (via ID)
private async Task<CKRecord> AccessCloudKit ()
{
string containerName = "iCloud.com.example.CKWork";
var container = CKContainer.FromIdentifier (containerName);
CKDatabase publicDatabase = container.PublicCloudDatabase;
var recordNameIHappenToKnow = "7eaf0432-2fa4-475f-851a-c6a19b3f8587";
var recordId = new CKRecordID (recordNameIHappenToKnow);
var record = await publicDatabase.FetchRecordAsync (recordId);
return record;
}
//Retrieve (query)
private async Task<CKRecord []> QueryCloudKit ()
{
string containerName = "iCloud.com.example.CKWork";
var container = CKContainer.FromIdentifier (containerName);
CKDatabase publicDatabase = container.PublicCloudDatabase;
var zoneId = CKRecordZone.DefaultRecordZone ().ZoneId;
Console.WriteLine ($"Default zone name = '{zoneId.ZoneName}' owner = '{zoneId.OwnerName}'");
/*
var zoneName = "_defaultZone";
var ownerName = "__defaultOwner__";
var zoneId0 = new CKRecordZoneID (zoneName, ownerName);
Console.WriteLine ($"Assert { zoneId0 == zoneId }");
*/
var recordType = "StationReferences";
var location = new CLLocation (19.7303, -155.056);
var predicate = NSPredicate.FromFormat ("distanceToLocation:fromLocation:(Position, %@) < 100", location);
var query = new CKQuery (recordType, predicate);
var result = await publicDatabase.PerformQueryAsync (query, zoneId);
return result;
}
//Update
private async Task<CKRecord> UpdateInCloudKit (CKDatabase database, CKRecord record, NSString key, NSObject newValue)
{
record [key] = newValue;
var modifiedRecord = await database.SaveRecordAsync (record);
return modifiedRecord;
}
//Delete
private async Task<CKRecordID> DeleteRecord (CKDatabase database, CKRecord record)
{
var id = record.Id;
var deletedId = await database.DeleteRecordAsync (id);
return deletedId;
}