如何在Swift中使用UIDatePicker只在没有日期组件的CoreData中存储时间?

时间:2016-08-07 13:08:58

标签: ios swift core-data nsdate uidatepicker

我在我的应用中使用UIDatePicker来选择没有日期的时间并将其值存储在CoreData中。但是,如果我在代码中使用datePicked.datedatePickedUIDatePicker),则会存储日期值。我知道我可以使用NSDateFormatter来存储HH:mm a格式,但我不想在我的数据模型中存储字符串。即使我将dateFromString函数存储为以所需格式存储时间,也会添加默认日期和时间。请告诉我如何只存储没有日期的时间。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

<强>更新
您可以在Core Data中保存可转换值。喜欢这堂课:

class Time: NSValueTransformer {
let hour: Int
let minute: Int
let second: Int

override init() { // only sample code
    hour = 0
    minute = 0
    second = 0
}

override class func transformedValueClass() -> AnyClass {
    return NSNumber.self
}

override func reverseTransformedValue(value: AnyObject?) -> AnyObject? {
    guard let number = value as? NSNumber else {
        return nil
    }
    return Time() // you should init Time from the number
}

override func transformedValue(value: AnyObject?) -> AnyObject? {
    let number = hour * 60 * 60 + minute * 60 + second
    return number
}

override class func allowsReverseTransformation() -> Bool {
    return true
}
}

你应该像这样添加transformable属性: enter image description here 你会在模型文件中得到这个:

extension Entity {

    @NSManaged var time: Time? // modify it to Time manually

}

现在,您可以将Time保存到托管对象。