CloudKit Przestrzeń nazw

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 CKRecordValue).

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 CKSyncEngineDelegate).

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ół CKRecordValueObjective-C .

ICKSyncEngineDelegate

Ten interfejs reprezentuje protokół CKSyncEngineDelegateObjective-C .

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;
}