0

只是尝试使用 Continuity 更新一些 Core Data 应用程序,但在使用 userInfo 字典中的选定对象 ID 在后续设备上显示正确数据时遇到了一些问题。

我的第一个想法是使用 ObjectID,但是在接收设备上,这永远不会在 Core Data 存储中找到相应的对象。

事实证明,objectID 的 URL 表示包含商店本身的 UUID,并且由于两个商店的 UUID 不同,这显然会失败。

所以我想我可以用持续的设备 UUID 替换 URL 中核心数据存储的 UUID 并使用它,毫无疑问它会起作用。

网址似乎是以下格式

有谁知道在具有通过 iCloud 同步的核心数据存储的两个设备之间传递对对象的引用的正确方法是什么?

4

1 回答 1

0

我会自己回答这个问题,看看是否有更好的答案......

我使用 Continuity API 传递url( objectIDfrom objectID.URIRepresentation) 并在接收设备上使用以下内容创建一个新 URL:

urlNSUserActivity.userInfo字典中传入的url

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

这似乎工作得很好 - 希望它可以帮助某人

于 2015-01-31T04:35:04.317 回答