使用核心数据

时间:2015-11-04 00:28:01

标签: ios swift core-data uidatepicker

我创建了两个日期选择器,用户可以在其中输入所需的日期和时间。

image of the datepickers

当用户单击“保存”按钮时,使用以下代码将输入的值保存到Core Data中:

    let dateFormatter = NSDateFormatter()
    dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle
    dateFormatter.timeStyle = NSDateFormatterStyle.NoStyle

    let timeFormatter = NSDateFormatter()

    timeFormatter.dateStyle = NSDateFormatterStyle.NoStyle
    timeFormatter.timeStyle = NSDateFormatterStyle.ShortStyle

    dateOfEntry = dateFormatter.stringFromDate(entryDate.date)  //entryDate is the name of the IBOutlet of the first date picker.

    timeStarted = timeFormatter.stringFromDate(startTime.date)  //startTime is the name of the IBOutlet of the second date picker.

这将日期保存为:2015年11月4日 时间为:上午11:15 然后我使用

保存到Core Data中
 entry.setValue(dateOfEntry, forKey: "date")

 entry.setValue(timeStarted, forKey: "startTime")

我想知道当用户打开不同的视图控制器时,是否可以使用这些存储的值来稍后设置单独的设置日期选择器的初始值。

1 个答案:

答案 0 :(得分:0)

目前,您正在选择人们使用选择器进行的日期和时间选择,并将这些选项转换为字符串,并将核心数据模型保存为两个字符串。

此方法可能存在的问题是,stringFromDate使用设备上的本地设置(国家/地区,语言)来格式化该字符串,因此,例如,在美国运行该应用的用户将采用与德国。

您可能想要做的是将日期选择器和时间选择器中的选项合并到一个NSDate中,然后将该组合日期直接保存在核心数据中。

当您创建实体时,它会提前做一些工作,但您会获得一些好处:

  • 不必担心来自不同地区的区域设置
  • 如果您曾经想过,现在可以根据您的日期属性应用值排序
  • 可以根据查询返回的日期填充您的选择器。