我一周中的某几天有7个按钮,其中的标签从1到7。我喜欢在点击时将这些值存储在核心数据中。由于核心数据中不允许使用数组,如何将它们分别存储在核心数据中?
最初,我是从这样的按钮上获取标签的
@IBAction func dayButtonPressed(_ sender: Any) {
guard let button = sender as? UIButton else { return }
if(dayTag.contains((sender as AnyObject).tag!)) {
if let index = dayTag.firstIndex(of: (sender as AnyObject).tag!) {
dayTag.remove(at: index)
}
} else {
dayTag.append((sender as AnyObject).tag!)
}
}
并将其存储到核心数据中,如下所示
object.setValue(dayTag, forKey: "days")
点击按钮时,我对如何创建7个单独的变量并将其存储到核心数据一无所知。任何,朝着这个方向的帮助将不胜感激。
答案 0 :(得分:1)
合理的解决方案是计算属性。
将天声明为
@NSManaged var days: String
并声明计算属性
var weekdays : [Int] {
get { return days.components(separatedBy: ",").map{Int($0)!) }
set { days = newValue.map(String.init).joined(separator: "," }
}
设置weekdays
会将Int
数组转换为逗号分隔的字符串并更新days
(反之亦然)。