【问题标题】:How to handle failure of Realm instance creation?如何处理 Realm 实例创建失败?
【发布时间】:2018-02-01 11:26:32
【问题描述】:

我正在尝试设置一个全局领域对象,如下所示:

do {
      self.realm = try Realm(configuration: baseConfig) 
    } catch {
        fatalError("Error occurred while trying to initialise realm \(error)")
    } 

但是,fatalError 经常被调用。根据 Realm 文档,这并不意外,我应该能够处理 catch 中的错误。

与任何磁盘 I/O 操作一样,如果资源受限,创建 Realm 实例有时会失败。实际上,这只会在第一次在给定线程上创建 Realm 实例时发生。

我正在考虑实施这样的事情,我只是重试第二次。

do {
  self.realm = try Realm(configuration: baseConfig) 
} catch {
   do {
      self.realm = try Realm(configuration: baseConfig) 
    } catch {
        fatalError("Error occurred while trying to initialise realm \(error)")
    } 
} 

我的问题是,如果可以保证创建 Realm 实例只能在线程上失败一次,那么 Realm 为什么不自己重试呢?

如果第一次失败,是否有初始化 Realm 对象的标准方法?

【问题讨论】:

  • 如果条件相同,无论您尝试创建数据库多少次,我认为您都会得到相同的结果

标签: ios swift realm


【解决方案1】:
 func createDB ()

 {
      do {
           self.realm = try Realm(configuration: baseConfig) 
      } catch {

         if(counter < 3)
         {  
              self.createDB()

              counter = counter + 1 
         }
         else
         {
            fatalError("Error occurred while trying to initialise realm \(error)")
          }

      } 


  }

【讨论】:

  • 不应该把计数器增量放在递归调用之前吗?
猜你喜欢
  • 2012-08-29
  • 2016-08-17
  • 2019-08-18
  • 2021-09-03
  • 2021-02-01
  • 1970-01-01
  • 2012-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多