如何在Swift中的CoreData模型中保存动态创建的UISwitch的更改状态?

问题描述:

我有一个UITableView包含用户添加的动态单元格。每个单元有一个UILabel和一个UISwitch。开关的默认状态为ON。每当用户添加它时,我将这些值保存在CoreData模型(UILabel,字符串为& UISwitch,作为Bool)。 每当用户切换交换机时,我想更新/存储CoreData模型中相同单元中的标签值对应的交换机的状态。我已经将标记(switch.tag = indexPath.row)添加到行中的每个开关,并且可以通过在我的cellChanged函数中使用sender.tag来访问它。但是我无法获取切换开关所在行的标签。如果我能以某种方式获取与切换开关相对应的标签值,则可以运行for循环在CoreData模型中查找该标签值,然后设置UISwitch的状态。由于我使用的是Swift语言,如果您可以使用相同的语言解释代码,我将不胜感激。如何在Swift中的CoreData模型中保存动态创建的UISwitch的更改状态?

+0

为什么你需要存储在CoreData的标签,做这些标签改变? –

+0

这些标签存储用户选择的时间值。 –

+0

够公平的。我可以假设你存储'NSDate's? –

这为我工作:

func switchTapped(sender:UISwitch) { 
let switchPosition = sender.convertPoint(CGPointZero, toView: self.tableView) 
let indexPath = self.tableView.indexPathForRowAtPoint(switchPosition) 

} 

更好的模式可以在单元中创建一个协议。像

@protocol MyCellDelegate{ 
func cellSwitchChanged(forCell: MyCell, toValue: Bool, withLabel: String?) 
} 

class MyCell: UITableVeiwCell{ 
weak veer delegate: MyCellDelegate 
. 
. 
. 

@IBaction handleSwitchChanged(sender: UISwitch){ 
self.delegate?.cellSwitchChanged(forCell: self, toValue: sender.value, withLabel: self.lblName.text) 
} 
} 

而在你的单元格为行索引路径,分配你的VC委托的单元格。并重写此方法。

因此,每当开关改变时,视图控制器将获得单元格引用,开关值和文本标签。那么您可以在这里进行核心数据更新操作。