gpt4 book ai didi

ios - 与 WatchOS 共享 Realm 数据

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:26 25 4
gpt4 key购买 nike

在我的项目中,我想在我的 iOS 10 应用程序和我的 watchOs 3 应用程序中同时使用一个 Realm 数据库。所以我所做的是将框架添加到三个不同目标的嵌入式二进制文件中。这碰巧工作得很好,但 watchKit 扩展似乎无法识别我在 iOS 环境中创建的对象。这两个设备之间如何共享 Realm 数据库?

最佳答案

更新:好的,感谢chrisamanse请注意,我对此做了更多研究。

事实证明,应用程序组在 watchOS 2 上不再可用。 watch 应用程序不再作为手机上的扩展程序运行;它们现在是两个孤立的进程,没有任何共享资源。

因此,这意味着有必要在 watch 和手机上维护一个单独的 Realm 文件,并通过 WatchConnectivity 传达对两者所做的任何更改。框架。


原文:iOS 应用程序和扩展程序(包括 Today 小部件和 watchOS 应用程序)需要被视为两个完全独立的实体,位于各自独立的容器中。默认情况下,扩展无法访问其父应用程序容器内的任何文件。如果您将 Realm 文件保存到默认路径(即“Documents”文件夹),watchOS 应用程序无法从那里访问它。

值得庆幸的是,可以使用 iOS 的“应用组”功能来指定父 iOS 应用和 watchOS 应用都可以访问的共享文件夹,并且可以读取和写入其中的任何 Realm 文件。

一旦您在您的应用中启用了App Groups 授权,只需将您的 Realm 文件的位置设置为指向该位置即可。

let sharedContainerURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.my.appgroups.bundleid")!
let realmURL = sharedContainerURL.appendingPathComponent("SharedRealm.realm")

let realmConfiguration = Realm.Configuration()
realmConfiguration.fileURL = realmURL
let realm = try! Realm(configuration: realmConfiguration)

a tutorial on the Realm website这更详细地解释了如何使这项工作起作用,但是此时 API 和 Swift 版本已经过时。

关于ios - 与 WatchOS 共享 Realm 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39644579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com