Swift 使用域反向关系保存对象

Swift 使用域反向关系保存对象,swift,realm,Swift,Realm,在Swift中使用领域数据库保存数据时出现问题 我有两个实体称为“MathSolutions”,“Folder”。一个文件夹可以有多个问题。一对多关系 MathSolutions实体 class MathSolutions: Object { dynamic var question = "" dynamic var steps = "" dynamic var createdDate = NSDate() let solutions = List<Fo

在Swift中使用领域数据库保存数据时出现问题

我有两个实体称为“MathSolutions”,“Folder”。一个文件夹可以有多个问题。一对多关系

MathSolutions实体

 class MathSolutions: Object {

    dynamic var question = ""
    dynamic var steps = ""
    dynamic var createdDate = NSDate()
    let solutions = List<Folders>()


    class func JSONInboundMappingDictionary() -> [String:String] {
        return [
            //"id": "id",
            "question"  : "question",
            "steps"     :"steps",
            "createdDate" : "createdDate",
            "solutions"     : "solutions"
        ]
    }
}
另一个处理部件

   let mathSolution = MathSolutions(value: ["question": answers.question,"steps":realmcrud.createJOSNString(answers),"createdDate":NSDate()] )
    realmcrud.saveMySolution(mathSolution,folder: folder!)



//MARK:-Save Solutions
func saveMySolution(mathSolutions:MathSolutions,folder: Folders){
    let realm = try! Realm()
    try! realm.write{
        mathSolutions.solutions.append(folder)
        realm.add(mathSolutions)
    }
}
创建的文件夹正常工作。问题是当我保存
MathSolutions
时,我得到了下面的错误

我总是犯错误

2016-10-12 15:39:36.234 JIT[92648:1964826]***由于未捕获的异常“无效属性名称”,正在终止应用程序,原因是:在“文件夹”类型的对象中找不到“属性名称”

编辑 调用创建部件

 let realmcrud = RealmCURD();
            //let folder = Folders(value : ["id" : realmcrud.folderNextID(),"folderName":self.enteredFolderName])
            let folder = Folders(value : ["folderName":self.enteredFolderName])
            realmcrud.createFolder(folder)
创建文件夹数据库文件

   //MARK:-Create folder
func createFolder(folders: Folders){
    let realm = try! Realm()
    try! realm.write{
        realm.add(folders,update: false)
    }
}
我的要求是我有文件夹和MathSolution实体, -我有文件夹列表,或者用户可以创建新文件夹,然后他们可以将我的数学问题保存在列表中选定的文件夹中

  • 当我保存时,我得到了上述问题
  • 我在初始阶段使用主键概念实现了这个需求,它运行良好[它完全处于早期阶段,主键概念意味着-在
    文件夹中有
    id
    文件和
    MathSolution
    实体类,使用id提供文件夹引用,即当我保存问题时,它转到
    MathSolution
    类似于
    问题、步骤、id、createdDate的表
    id,folderName
    ]但是后来,当我面对这个问题时,我决定使用对象映射。清楚了吗?有什么解决方案吗

有什么想法吗?请建议

当属性
folderName
实际被调用时,您以前是否存储过
Solution
对象?您是否更改了架构?如果是,您是否执行了迁移?您是否还可以提供一些创建
文件夹的代码?@ezcoding否。最初我开发了by使用id和主键,后来我的团队建议不使用主键概念。因此我更改了代码,但我从emulator中删除了应用程序并重新安装。我没有任何名为
name
@Dmitry的内容。我没有更改架构名称,但最初使用id的主键概念开发,后来删除了该part并在两个表之间添加对象映射。我将编辑我的问题并共享创建文件夹代码。不幸的是,仍然不清楚那里发生了什么,请您共享完整的堆栈跟踪?或者,更好的是,复制此问题的示例项目?当属性
folderName
实际上被称为
name
?您是否更改了架构?如果是,您是否执行了迁移?您是否也可以提供一些创建
文件夹的代码?@ezcoding No.最初我使用id和主键进行开发,后来我的团队建议不使用主键概念。因此我更改了代码,但我将应用程序从emulator中移动并重新安装。我没有任何名为
name
@Dmitry的内容。我没有更改架构名称,但最初使用ID主键概念开发,然后删除该部分并在两个表之间添加对象映射。我将编辑我的问题并共享创建文件夹代码。不幸的是,我现在还不清楚那里发生了什么,你能分享一个完整的堆栈跟踪吗?或者,更好的是,复制这个问题的示例项目?
   //MARK:-Create folder
func createFolder(folders: Folders){
    let realm = try! Realm()
    try! realm.write{
        realm.add(folders,update: false)
    }
}