Вот минимальный пример того, что я пытаюсь реализовать. достичь:
Код: Выделить всё
@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