【发布时间】:2019-02-12 18:07:22
【问题描述】:
下面我有一些分段控件,我正在尝试使用CoreData 保存它们。这看起来很简单,但只有最近的控制索引被保存。由于某种原因,其余部分被重置为 0。我已取消选中每个属性的默认设置。
Quote 是我的主要实体,与 Worksheet 具有一对一的关系,称为 worksheet。
@IBAction func segmentPressed(_ sender: UISegmentedControl) {
let worksheet = Worksheet(context: context)
switch sender.tag {
case 0:
worksheet.irrigation = Int32(irrigationSegment.selectedSegmentIndex)
case 1:
worksheet.waste = Int32(wasteSegment.selectedSegmentIndex)
case 2:
worksheet.water = Int32(waterSegment.selectedSegmentIndex)
default:
break
}
if let quote = currentQuote as? Quote {
quote.worksheet = worksheet
appD.saveContext()
}
}
更新:我突然想到完全摆脱 switch 语句......现在它可以正确保存。但我仍然想知道为什么要重置这些值。也许 Int 属性在保存其上下文但没有值时自动设置为零?似乎这就是默认值设置的作用。除了我的都没有检查。
【问题讨论】:
标签: swift core-data save one-to-one