Там нет ничего CKRecord
, который напрямую сообщает вам, из какой базы данных он пришел. Но вы всегда знаете базу данных из источника записи.
Если вы получили уведомление о подписке или извлечение изменений, вы знаете базу данных из CKQueryNotification
, CKRecordZoneNotification
или нового CKDatabaseNotification
.
Конечно, если вы создаете новый CKRecord
, базы данных пока нет, но вы должны знать, какую базу данных вы собираетесь использовать (общедоступную, приватную или новую совместно используемую).
Конечно, если вы получаете сообщение CKRecord
от выполнения запроса, вы знаете, какая база данных была использована для операции запроса.
Если вам нужно сохранить локальную копию записи, а затем вам необходимо загрузить эту локальную копию и отправить ее в соответствующую базу данных, то ваша локальная копия должна включать в себя данные, сообщающие вам, к какой базе данных она принадлежит. Поскольку вы всегда можете определить источник CKRecord
при получении записи, это не проблема.
Как вы получили «CKRecord»? Вы должны предоставить больше контекста в своем вопросе. – rmaddy
Что я имею в виду, имеет ли CKRecord какая-либо информация (в ее наборе метаданных) о том, к какой базе данных она принадлежит? CKRecord можно вытащить из любой базы данных или создать на устройстве, что означало бы, что у него еще нет подключения к базе данных, что приведет к четвертой возможности. – Jonny
Если в наборе метаданных CKRecord нет такой информации (с окончательным ответом на мой вопрос: ** Нет такой информации **), то это означает, что с любым локальным кэшем на устройстве мы все будем ответственный за сохранение этого добавленного фрагмента метаданных как-то для каждого CKRecord. – Jonny