2015-10-20 3 views
1

Недавно я обновился до Swift 2.0, и теперь у меня проблемы с областью. Совсем недавно, я испытываю проблему, когда приложение мгновенно падает, когда он достигает первое вхождение «! Попытаться Realm()», в результате этой ошибки:Ошибка Runtime Realm

fatal error: 'try!' expression unexpectedly raised an error: Error Domain=io.realm Code=2 "open() failed: No such file or directory" UserInfo={NSFilePath=/Users/XXXXX/Library/Developer/CoreSimulator/Devices/7299DF18-E7D5-4499-93DD-A5035FB48E67/data/Containers/Data/Application/BED64819-5895-407F-9E90-9888741E24EB/Documents/default.realm, NSLocalizedDescription=open() failed: No such file or directory, Error Code=2}: file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-700.0.59/src/swift/stdlib/public/core/ErrorType.swift, line 50 (lldb)

Я видел еще один пост несколько, связанный с этим, но это не помогло, потому что я не пытаюсь напрямую вызвать этот путь, он просто бросает эту ошибку.

Спасибо

ответ

3

При использовании try! в Swift, вы выбираете игнорировать ошибки, которые вы могли бы исправить.

В этом случае инициализатор Realm обозначен как throws. Вот выдержка из документации Realm на Error Handling:

Like any disk IO operation, creating a Realm instance could sometimes fail if resources are constrained. In practice, this can only happen the first time a Realm instance is created on a given thread. Subsequent accesses to a Realm from the same thread will reuse a cached instance and will always succeed.

To handle errors when first accessing a Realm on a given thread, use Swift’s built-in error handling mechanism:

do { 
    let realm = try Realm() 
} catch let error as NSError { 
    // handle error 
} 
-1

То же самое случилось со мной, когда я вручную удалил объект из Realm через Realm браузер. Вот мои два цента: удаление Realm.lock и других файлов журналов и перезагрузка приложения работали для меня. Взгляните на скриншот:

enter image description here