我正在为Realm使用新的defaultConfiguration(我想是这样......)
那么我该尝试什么?我想将默认的Realm URL更改为基于Apple App组的ID,因为我想从我的应用程序的Today Extension和我的应用程序本身使用相同的Realm。
我找到了一个(slightly outdated Realm tutorial for WatchKit Extension),你把以下内容放到了AppDelegate
:
realmUrl: NSURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.net.exchange.On")!
realmUrl.URLByAppendingPathComponent("db.realm")
var config = Realm.Configuration.defaultConfiguration
config.fileURL = realmUrl
Realm.Configuration.defaultConfiguration = config
这很有效。但我从Realm读取的编码,在此之前正在工作,现在崩溃了这个例子:
这正在改变这个变化:`让领域=尝试!境界()``
但是现在它创造了这个美丽的错误; - )
fatal error: 'try!' expression unexpectedly raised an error: Error Domain=io.realm
Code=2 "Operation not permitted" UserInfo={Error Code=2,
NSFilePath=/private/var/mobile/Containers/Shared/AppGroup/4E8402AD-89E4-4138-8B83-CA6B409BB238,
Underlying=n/a, NSLocalizedDescription=Operation not permitted}:
file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-703.0.18.8/src/swift/stdlib/public/core/ErrorType.swift, line 54
我有点失落。希望任何人都可以帮助我。 TIA John
答案 0 :(得分:2)
问题是,您在Realm配置中设置的路径fileURL
是应用程序组容器的路径,而不是其中文件的路径。这是由于以下代码:
let realmUrl: NSURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.net.exchange.On")!
realmUrl.URLByAppendingPathComponent("db.realm")
NSURL.URLByAppendingPathComponent(_:)
返回一个新网址,而不是改变现有网址。将代码更改为类似以下内容应该会导致在Realm的配置中设置正确的URL:
let groupContainerUrl = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.net.exchange.On")!
let realmUrl = groupContainerUrl.URLByAppendingPathComponent("db.realm")