更新: 好的,感谢chrisamanse的单挑,我对此做了更多的研究.
事实证明,watchOS 2上的应用程序组已不再可用.观看应用程序不再作为手机上的扩展程序运行; 它们现在是两个孤立的进程,没有任何共享资源.
因此,这意味着有必要在手表和手机上维护单独的Realm文件,并通过WatchConnectivity框架传达对其所做的任何更改.
原文: iOS应用程序和扩展(今日小部件和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)
Run Code Online (Sandbox Code Playgroud)
Realm网站上有一个教程,解释了如何更详细地完成这项工作,但是API和Swift版本在这一点上已经过时了.
| 归档时间: |
|
| 查看次数: |
1938 次 |
| 最近记录: |