Лучший способ для полей созданных/обновленныхАт в SwiftData?IOS

Программируем под IOS
Ответить
Anonymous
 Лучший способ для полей созданных/обновленныхАт в SwiftData?

Сообщение Anonymous »

Исходя из PostgreSQL/Django, я привык к автоматическим меткам времени createAt и updateAt в таблицах моей базы данных. Я хотел бы реализовать аналогичную функциональность в SwiftData, но я не уверен, что это идиоматический подход или есть лучшие альтернативы (например, протокол истории).
Вот минимальный пример того, что я пытаюсь реализовать. достичь:

Код: Выделить всё

@Model
class Note {
var title: String
var content: String
var createdAt: Date
var updatedAt: Date

init(title: String, content: String) {
self.title = title
self.content = content
self.createdAt = Date()
self.updatedAt = Date()
}
}
У меня есть несколько конкретных вопросов:
  • Правильный ли это подход для отслеживания времени создания/изменения в SwiftData или есть более идиоматический способ?
  • Если это правильный подход, как я могу сделать обновление UpdateAt автоматически, когда какое-либо свойство изменения? В настоящее время мне нужно будет вручную установить его в каждом представлении:

Код: Выделить всё

struct EditNoteView: View {
@Environment(\.modelContext) private var modelContext
@Bindable var note: Note

var body: some View {
TextField("Title", text: $note.title)
.onChange(of: note.title) {
note.updatedAt = Date() // Need to do this manually
try? modelContext.save()
}
}
}
  • Как это работает с функцией автосохранения SwiftData? Если SwiftData автоматически сохраняет изменения, как я могу гарантировать, что updateAt всегда актуален, не устанавливая его явно?
    Следует ли мне вместо этого рассмотреть возможность использования протокола History? Если да, то как будет выглядеть эта реализация?
  • Я искал сеансы и документацию WWDC, но не нашел четких указаний по отслеживанию временных меток. шаблоны в SwiftData.
    Любая помощь или рекомендации по передовому опыту будут оценены по достоинству! Предпочтительно подход, который работает как в iOS 17, так и в iOS 18.


Подробнее здесь: https://stackoverflow.com/questions/791 ... -swiftdata
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»