Как сохранить дату и время создания объекта Core Data
Я хочу сохранить и извлечь текущее время (если сегодня) или дату заметки, созданной в Core Datap >
Расскажи мне, как я могу это сделать.
Ответы
Ответ 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
получит дату по умолчанию текущей даты/времени.