Как передать идентификатор объекта Core Data и использовать его с Continuity
Просто пытаетесь обновить некоторые приложения Core Data с помощью Continuity и столкнулись с небольшой проблемой при использовании идентификатора выбранных объектов в словаре userInfo для отображения правильных данных на продолжающемся устройстве.
Моей первой мыслью было использовать ObjectID, однако на принимающем устройстве он никогда не найдет соответствующий объект в хранилище базовых данных.
Как выясняется, URL-представление objectID содержит UUID самого хранилища, и поскольку два UUID хранилища различны, это, очевидно, приведет к сбою.
Таким образом, я думаю, что я мог бы заменить UUID хранилища базовых данных в URL-адресом на UUID устройства и использовать его, и, без сомнения, он будет работать.
URL, кажется, имеет следующий формат
Кто-нибудь знает, как правильно будет передать ссылку на объект между двумя устройствами с основными хранилищами данных, которые синхронизируются через iCloud?
1 ответ
Я отвечу на это сам и посмотрю, есть ли лучшие ответы...
Я передаю url
из objectID
(от objectID.URIRepresentation
) с помощью Continuity API и на принимающем устройстве создайте новый URL-адрес, используя следующее:
url
URL передается в NSUserActivity.userInfo
толковый словарь
let storeUUID = self.identifierForStore()
// Switch the host component to be the local storeUUID
let newURL = NSURL(scheme: url.scheme!, host: storeUUID, path: url.path!)
func identifierForStore()->NSString? {
if let store = self.persistentStoreCoordinator?.persistentStores[0] as? NSPersistentStore {
return store.identifier
} else {
return nil
}
}
Это, кажется, работает просто отлично - надеюсь, что это поможет