我在我的 swift 项目中使用 Realm。
这是我的对象,膳食和 react - 具有一对多的映射:
enum DishType: String{
case Breakfast
case Second_breakfast
case Brunch
case Elevenses
case Lunch
case Tea
case Dinner
case Supper
case Snack
}
class Meal : Object{
dynamic var date: NSDate = NSDate()
dynamic var dishType = DishType.Breakfast.rawValue
var dishTypeEnum: DishType{
get{
return DishType(rawValue: dishType)!
}
set{
dishType = newValue.rawValue
}
}
dynamic var foodItems: String = ""
var reactions = List<Reaction>()
}
enum Category: String{
case Apetit
case Energy
case Emotion
}
enum Type: String{
case Positive
case Negative
}
class Reaction: Object{
dynamic var category = Category.Apetit.rawValue
dynamic var text: String?
dynamic var selected: Bool = false
dynamic var type = Type.Positive.rawValue
.....
}
我需要将状态从一个 viewController 保存到另一个。 我选择了一些 react ,返回到 react 屏幕时我必须看到这些 react 被选中。
我正在考虑保存到 Realm 中,但我还必须在输入一组新数据时清除所有反应状态。 从 Reaction 中删除时,似乎也破坏了关系。我保存了 Meal 对象(它也与 Reaction 有关系)。
我不知道如何从已保存的餐点中区分指示状态的 react 和相关 react 。
我正在考虑为状态保存 Reactions,就在 NSUserDefaults 中。但是像这样我会结合这两个框架。
你怎么看?你如何保存状态?
最佳答案
I was thinking saving into Realm, but I also have to clear all reactions state when entering a new set of data. When deleting from Reaction, it seems that it also breaks the relation. I have Meal objects saved (which also have a relation with Reaction).
当您对 Reaction
对象进行修改时,这些修改将出现在 react 链接的位置。因此,除非是重新措辞,否则您可能不想对它们进行修改。 (例如,修复拼写错误“你不想要甜点”=>“你不想要甜点”😉)此外,如果你删除它们,它们也会从它们链接的 Meal
对象中删除.
I was thinking saving Reactions for state, just in NSUserDefaults. But like this I will combine both frameworks.
那不是必须的。您可以使用 Realm 完全解决您的用例。
解决方案是不要在 Reaction
中包含属性 selected
。相反,您只需将选定的 react 添加到 Meal
中。在您的 View Controller 中,这意味着您通过使用 let reactions = realm.objects(Reaction)
查询所有单元格来为每个 Reaction
呈现一个单元格。
然后您可以通过检查它们是否包含在 Meal
的 react 中来确定是否需要添加复选标记,如下所示:
meal.reactions.contains(reaction)
如果选择了对某餐的 react ,则将其添加到该餐中:
meal.reactions.add(reactions[indexPath.row])
如果取消选择 react ,则将其从膳食中删除:
meal.reactions.removeAtIndex(meal.reactions.indexOf(reactions[indexPath.row]))
关于swift - 使用 Realm 保存 viewController 之间的模型状态 - 它会破坏关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36543257/