2016-01-13 104 views
0

我是Realm的新手,我第一次使用它。我遵循指南中的每一步,并将其插入到我的项目中。我创建了一个模型和一个函数来将对象插入到领域数据库中。无法保存或加载对象

不知何故,我不断收到错误。这是我做的。

我的功能

do { 

     let realm = try Realm() 

     let proposition = Proposition() 
     proposition.name = (currentProposition.name) 
     proposition.energyType = (currentProposition.energyType) 
     proposition.lifetime = (currentProposition.lifetime) 
     proposition.saving = (currentProposition.saving) 
     proposition.investing = (currentProposition.investing) 

     if let _ = propositionsArray.indexOf(proposition) { 
      try! realm.write { 
       realm.delete(proposition) 
       loadPropositions() 
      } 
     } else { 
      try! realm.write { 
       realm.add(proposition) 
       loadPropositions() 
      } 
     } 
    } catch let error as NSError { 
     print("Add proposition error \(error)") 
    } 

这里是我的模型

import RealmSwift 
import Foundation 

class Proposition : Object { 

    dynamic var name: String = "" 
    dynamic var energyType: String = "" 
    dynamic var lifetime = 0 
    dynamic var saving = 0 
    dynamic var investing = 0 

} 

不知怎的,我不断收到以下错误

printscreen of console

谁能告诉我什么,我做错了什么?

回答

2

您看到的错误表明您的应用程序定义的数据模型与您打开的Realm的数据模型不匹配。这通常是由于改变你的数据模型。在这种情况下,错误提到您已添加lifetime,savinginvesting属性,并将nameenergyType更改为非空值。

有两种方式,以适应变化的数据模型:

  1. 如果你在早期的发展,并不需要支持旧的数据模型,你可以简单地删除境界文件和启动用空数据结束。
  2. 您可以执行迁移以使Realm更新Realm文件的数据模型。有关如何执行迁移的信息,请参阅Realm文档的Migrations部分。
+0

感谢您的回答。我设法通过迁移来完成这项工作,尽管我无法找出删除旧领域文件的最佳方法。你可以建议在开发时删除它们的最安全的方法吗? – Reshad