Swift 使用域反向关系保存对象
在Swift中使用领域数据库保存数据时出现问题 我有两个实体称为“MathSolutions”,“Folder”。一个文件夹可以有多个问题。一对多关系 MathSolutions实体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
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
实体类,使用id提供文件夹引用,即当我保存问题时,它转到MathSolution
类似于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)
}
}