比方说,我想将realm用于我的共享扩展,所以问题是,我可以在包含应用程序运行时访问共享目标中的Realm。看起来这是不可能的,但我可以从经验丰富的建议。 谢谢!
答案 0 :(得分:1)
您必须将要共享的文件放在共享容器中:
RLMRealmConfiguration *configuration = [RLMRealmConfiguration defaultConfiguration];
configuration.fileURL = [[[NSFileManager defaultManager]
containerURLForSecurityApplicationGroupIdentifier:@"group.your.group.name"]
URLByAppendingPathComponent:@"db.realm"];
RLMRealm *realm = [RLMRealm realmWithConfiguration:configuration error:nil];
这需要为应用程序和扩展程序配置权利以拥有共享容器。
答案 1 :(得分:1)
Xcode 11-Swift 5
要使Realm可以从多个目标访问,您必须在Xcode的工作区中创建一个应用程序组。
在主要目标的签名和功能标签中,请按照以下步骤操作:
容器的标识符应以 group开头。
确保所有需要访问领域的目标都在 App Group 部分中指定了相同的容器。
在您的 AppDelegate 中,指定以下Realm配置:
if var directory: URL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.yourappgroup.identifier") {
directory.appendPathComponent("db.realm", isDirectory: true)
let config = Realm.Configuration(fileURL: directory, schemaVersion: 1)
Realm.Configuration.defaultConfiguration = config
}
将“ group.com.yourappgroup.identifier”更改为您在 Signing&Capabilities 中指定的实际组标识符。
这将告诉Realm将自身放置在组容器中。
最后,应该告诉每个希望访问Realm的目标在同一组容器中进行搜索。
因此,当您希望从其他目标访问Realm时,只需添加相同的配置代码即可!