将日期值分别存储在核心数据中

时间:2019-06-07 14:03:54

标签: ios swift core-data

我一周中的某几天有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个单独的变量并将其存储到核心数据一无所知。任何,朝着这个方向的帮助将不胜感激。

1 个答案:

答案 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(反之亦然)。