2016-10-05 11 views
1

Как можно (или, может) узнать, к какой базе данных iCloud принадлежит CKRecord?Узнайте, какая база данных принадлежит CKRecord для

Там должно быть четыре Каковы возможности в это время:

  • частной
  • общественного
  • совместно
  • нет подключения к базе данных еще, если оно создано на устройстве
+1

Как вы получили «CKRecord»? Вы должны предоставить больше контекста в своем вопросе. – rmaddy

+0

Что я имею в виду, имеет ли CKRecord какая-либо информация (в ее наборе метаданных) о том, к какой базе данных она принадлежит? CKRecord можно вытащить из любой базы данных или создать на устройстве, что означало бы, что у него еще нет подключения к базе данных, что приведет к четвертой возможности. – Jonny

+0

Если в наборе метаданных CKRecord нет такой информации (с окончательным ответом на мой вопрос: ** Нет такой информации **), то это означает, что с любым локальным кэшем на устройстве мы все будем ответственный за сохранение этого добавленного фрагмента метаданных как-то для каждого CKRecord. – Jonny

ответ

0

Там нет ничего CKRecord, который напрямую сообщает вам, из какой базы данных он пришел. Но вы всегда знаете базу данных из источника записи.

Если вы получили уведомление о подписке или извлечение изменений, вы знаете базу данных из CKQueryNotification, CKRecordZoneNotification или нового CKDatabaseNotification.

Конечно, если вы создаете новый CKRecord, базы данных пока нет, но вы должны знать, какую базу данных вы собираетесь использовать (общедоступную, приватную или новую совместно используемую).

Конечно, если вы получаете сообщение CKRecord от выполнения запроса, вы знаете, какая база данных была использована для операции запроса.

Если вам нужно сохранить локальную копию записи, а затем вам необходимо загрузить эту локальную копию и отправить ее в соответствующую базу данных, то ваша локальная копия должна включать в себя данные, сообщающие вам, к какой базе данных она принадлежит. Поскольку вы всегда можете определить источник CKRecord при получении записи, это не проблема.

+0

Как уже упоминалось, я просто храню метаданные CKRecord для вещей в моем кеше, а не для всего CKRecord. Тогда мне нужно будет добавить исходную информацию базы данных рядом с этими метаданными. – Jonny

+0

Я просто понял, что мне, вероятно, потребуется добавить имя зоны в мой локальный кеш. Записи при локальном кешировании должны быть сохранены в базе данных, зоне и имени записи, если я правильно понимаю, чтобы избежать столкновений. – Jonny