2017-02-01 3 views
3

У меня есть атрибут в CoreData, который принимает значение даты. Я просто хочу получить текущую дату и сохранить ее в этом формате «dd/mm/yyyy». Но не знаю как. БлагодаряКак сохранить текущую дату в CoreData?

+1

CoreData может хранить 'date' объекты изначально. При переходе между вашим приложением и базой данных вам не нужно переводить в стандартный формат «String». Например, в моем проекте у меня есть некоторые объекты со свойствами типа 'Date', которые объявлены в подклассе' NSManagedObject' как '@NSManaged var date: Date?'. К ним можно получить доступ напрямую, не беспокоясь о каких-либо преобразованиях «String». –

ответ

2

Если вы храните его в качестве даты, то вы не имеете никакого контроля над форматом, пока не попробуете представить возвращаемое значение где-то, и вы просто хранить Date()

Если вы храните его, как показано, то вам нужно использовать DateFormatter, чтобы создать строку, которую нужно

+0

Итак, когда я устанавливаю значение для сохранения, я просто использую «Date()»? –

+0

Да - https://developer.apple.com/reference/foundation/date/1780470-init Значение будет сохранено в формате даты - не 'dd/mm/yyyy', поэтому, если вы хотите отобразить его как что вам нужно отформатировать его, прежде чем использовать его позже. – Russell

+0

Итак, я бы просто отформатировал его, когда верну его из основных данных? –

3

Здесь вы можете хранить дату в CoreData, как показано в формате

let date = NSDate() 
var dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "dd/MM/yyyy" 
var dateString = dateFormatter.string(from: date as Date) 

магазин DateString в вашем CoreData

+0

, но суть в том, что вы можете ** либо сохранить значение Date, либо его строковое представление. Вы не можете сохранить значение даты в формате – Russell

+0

@ Russell Я знаю. но формат, который он задал, находится в этом формате. Поэтому я дал ему этот ответ. Для другого сценария у него уже есть ответ –

0

Чтобы сохранить даты в Core Data я создал следующее расширение

extension Date { 
    /** 
     Formats a Date 

     - parameters format: (String) for eg dd-MM-yyyy hh-mm-ss 
     */ 
    func format(format:String = "dd-MM-yyyy hh-mm-ss") -> Date { 
     let dateFormatter = DateFormatter() 
     dateFormatter.dateFormat = format 
     let dateString = dateFormatter.string(from: self) 
     if let newDate = dateFormatter.date(from: dateString) { 
      return newDate 
     } else { 
      return self 
     } 
    } 
} 

Чтобы установить значение даты из поля

let date = Date() 
entity?.setValue(date.format(), forKey: "updated_at") 

Примечание: Вы можете см. дату, сохраненную как временную метку при открытии базы данных. Пожалуйста, обратитесь к следующему вопросу NSDate being saved as timestamp in CoreData

Вы можете также передать вам собственные форматы даты в формате «()» расширение, чтобы получить различные типы дат в приложении

Смежные вопросы