Как сохранить дату и время создания объекта Core Data

Я хочу сохранить и извлечь текущее время (если сегодня) или дату заметки, созданной в Core Data​​p >

Расскажи мне, как я могу это сделать.

Ответы

Ответ 1

Создайте объект Core Data, названный Note, дайте ему атрибут, называемый timeStamp Установите для него значение Дата.

При создании новой заметки назначьте это текущее время:

[note setTimeStamp:[NSDate date]];

Сохраняйте заметку, то есть.

Ответ 2

У вас может быть установлен ваш пользовательский подкласс NSManagedObject, как только он вставлен в контекст, переопределив метод -awakeFromInsert:

@interface Person : NSManagedObject
@property (nonatomic, copy) NSDate *creationDate; // modeled property
@end

@implementation Person
@dynamic creationDate; // modeled property

- (void)awakeFromInsert
{
    [super awakeFromInsert];

    self.creationDate = [NSDate date];
}
@end

Обратите внимание, что creationDate выше - это смоделированное свойство атрибута Core Data "date", поэтому его методы доступа генерируются автоматически. Обязательно задайте собственное имя класса NSManagedObject соответствующим образом.

Ответ 3

У вас есть объект Note с атрибутом created?

Задайте значение по умолчанию now()

Edit

Удалите эту настройку now(), поскольку по умолчанию она использует время сборки, а не текущее время. Если вы хотите установить его правильно - вам нужно использовать подкласс NSManagedObject.

Ответ 4

Просто чтобы держать этот вопрос в актуальном состоянии с помощью Swift, в xcdatamodelid щелкните объект, для которого вы хотите создать дату по умолчанию. В Инспекторе моделей данных измените Codegen с "Определение класса" на "Вручную/Нет":

enter image description here

Затем в строке меню выберите " Editor → Create NSManagedObject Subclass... и создайте два класса Swift: Note+CoreDataClass.swift и Note+CoreDataProperties.swift

Откройте файл Note+CoreDataClass.swift и добавьте следующий код:

import Foundation
import CoreData

@objc(Note)
public class Note: NSManagedObject {
    override public func awakeFromInsert() {
        super.awakeFromInsert()
        self.creationDate = Date() as NSDate
    }
}

Теперь creationalDate получит дату по умолчанию текущей даты/времени.