CoreData 是否支持方法?

Does the CoreData support methods?

我有一个带有属性(var 和 let)和方法的 class。为了存储数据,我使用 UserDefaults 并尝试使用 MVC。现在我想使用 CoreData。我可以使用一个实体来存储 var,但是我应该把方法放在哪里呢?方法可以放在CoreData中吗?如果不是,那么将处理变量的方法和逻辑放在哪里更好?请帮助我)

class Statistics {
    var defaults = UserDefaults.standard
    var completed = 0
    var launched = 0
    var minutes = 0
    var today = 0
    var dateNew = 0
    let calendar = Calendar.current
    
    static var passedSecondsBackground = 0
    static var didBackground = false
    
    enum Keys: String {
        case day = "PMDR.Day"
        case week = "PMDR.Week"
        case month = "PMDR.Month"
        case year = "PMDR.Year"
        case completed = "Completed"
        case launched = "Launched"
        case minutes = "Minutes"
    }
    
    var keyCompleted = Keys.completed.rawValue
    var keyLaunched = Keys.launched.rawValue
    var keyMinutes = Keys.minutes.rawValue
    

    func checkDate(array: Array<Statistics>) {
        for date in array {
            date.dateNew = date.defaults.integer(forKey: "\(date)")
            if date.today != date.dateNew {
                date.deleteScore(when: date)
                date.defaults.set(date.today, forKey: "\(date)")
                date.dateNew = date.defaults.integer(forKey: "\(date)")
            }
        }
    }
    
    func updateScore(array: Array<Statistics>) {
        for date in array {
            date.completed = date.defaults.integer(forKey: date.keyCompleted)
            date.launched = date.defaults.integer(forKey: date.keyLaunched)
            date.minutes = date.defaults.integer(forKey: date.keyMinutes)
        }
    }

    /* etc... */
}

有两种选择。

  • 如果 类 是由 Xcode 生成的,请将您的自定义逻辑放入 类.
  • extensions
  • 自己创建 类(通过将 Codegen 设置为 Manual/None 和菜单项 Editor > Create NSManagedObject Subclass)。这种方式更难维护,但您可以通过将可选类型替换为非可选类型并将关系类型 NSSet 替换为本机 Set
  • 来自定义 NSManagedObject sub类