Как передать идентификатор объекта Core Data и использовать его с Continuity

Просто пытаюсь обновить некоторые приложения Core Data с помощью Continuity и столкнулся с небольшой проблемой с использованием идентификатора выбранных объектов в словаре userInfo для отображения правильных данных на продолжающемся устройстве.

Моей первой мыслью было использовать ObjectID, однако на принимающем устройстве это никогда не нашло бы соответствующий объект в хранилище Core Data.

Как выясняется, URL-представление objectID содержит UUID самого хранилища, и, поскольку UUID двух хранилищ различаются, это, очевидно, приведет к сбою.

Так что я думаю, я мог бы заменить UUID хранилища Core Data в URL-адресе на продолжающийся UUID устройств и использовать это, и, без сомнения, это сработает.

URL-адрес имеет следующий формат

Кто-нибудь знает, как правильно передать ссылку на объект между двумя устройствами с основными хранилищами данных, которые синхронизируются через iCloud?


person Duncan Groenewald    schedule 31.01.2015    source источник


Ответы (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
    }
}

Кажется, это работает просто отлично - надеюсь, это поможет кому-то

person Duncan Groenewald    schedule 31.01.2015
comment
Может показаться, что это работает, но нет гарантии, что идентификатор объекта будет совпадать в двух постоянных хранилищах. Одно устройство может иметь p1 для идентификатора, а другое может иметь что-то совершенно другое p4, p2, p3 и т. д. - person Chad; 27.10.2015