2016-06-29 5 views
1

나는 영역에 대한 새로운 defaultConfiguration (나는 ... 그렇게 생각)영역 예외 오류 도메인 = io.realm 코드 = 2

그래서 내가 무엇을 달성하려고 할를 사용하여 struggeling하고 "작업은 허용되지 않습니다." Apple App 그룹 기반 ID로 기본 영역 URL을 변경하고 싶습니다. 왜냐하면 내 앱의 오늘 확장뿐만 아니라 내 앱 자체에서 동일한 영역을 사용하기를 원하기 때문입니다. 이 작품

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 

: 네이 (가) AppDelegate에 다음을 넣어 곳

은 내가 ( slightly outdated Realm tutorial for WatchKit Extension)을 발견했다. 하지만 그 전에 작업하고 있던 Realm에서 읽는 코드는 이제 예외로 인해 충돌합니다.

이렇게 변경되었습니다. 'let realm = try! 영역()``

그러나 지금은이 아름다운 오류 ;-)

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

답변

2

문제는 렐름의 구성에서 설정하려는 경로 fileURL이 앱 그룹 컨테이너의 경로가 아니라 해당 파일의 경로가된다는 것입니다. 이 때문에 다음 코드 조각입니다 :

let realmUrl: NSURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.net.exchange.On")! 
realmUrl.URLByAppendingPathComponent("db.realm") 

NSURL.URLByAppendingPathComponent(_:)는 기존의 돌연변이보다는 새로운 URL을 반환합니다. 코드를 다음과 같이 변경하면 영역의 구성에 올바른 URL이 설정되어야합니다.

let groupContainerUrl = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.net.exchange.On")! 
let realmUrl = groupContainerUrl.URLByAppendingPathComponent("db.realm") 
+0

감사합니다. 그게 전부 야. 존경하는 환호 –

관련 문제