2016-06-30 7 views
1

글로벌 구성을 만들어 다음과 같은 코드가 있습니다영역이 : 데이터베이스 이름

class AppDelegate: UIResponder, UIApplicationDelegate { 

var window: UIWindow? 

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 

    var config = Realm.Configuration() 

    config.fileURL = config.fileURL!.URLByDeletingLastPathComponent? 
     .URLByAppendingPathComponent("HelloWorld.realm") 

    Realm.Configuration.defaultConfiguration = config 

    return true 
} 

나는 AppDelegate의 영역에 대한 기본 이름을 설정하고있어합니다. 내의 ViewController 영역이 자신의 상태의이 새로운 객체이기 때문에

class LoadingScreenViewController: UIViewController { 

    let realm = try! Realm() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     //The config (HelloWorld.realm) is printed 
     print(Realm.Configuration.defaultConfiguration) 

     //The config (default.realm) is printed 
     print(self.realm.configuration)  
    } 
} 

어쩌면 그건 : 내가 지금처럼 내의 ViewController의 새로운 영역 개체를 만들 때이 이름/설정이로드되지 않습니다. 그렇다면 Singleton을 만들어야합니까? 그리고 그렇게한다면 비동기 적으로 DB에 쓰는 것을 처리 할 수 ​​없다는 것을 의미하지는 않을 것입니다.

답변

2

구성에 아무런 문제가 없으므로 작성 방법을 변경할 수 있습니다.

lazy var realm :Realm = { 
    var realm = try! Realm() 
    return realm 
}() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    //The config (HelloWorld.realm) is printed 
    print(realm.configuration) 
} 

또는

멤버 VAR와 어쩌면
var realm :Realm! 
override func viewDidLoad() { 
    super.viewDidLoad() 
    realm = try! Realm() 
    //The config (HelloWorld.realm) is printed 
    print(realm.configuration) 
} 

let realm = try! Realm()

이 도움이 될 희망에 뭔가 문제가 발생합니다 : D 매력으로

+0

작품을, 감사합니다! – Hapeki