New task feature #2
@@ -5,7 +5,7 @@ import SwiftUI
|
|||||||
struct TodosApp: App {
|
struct TodosApp: App {
|
||||||
var sharedModelContainer: ModelContainer = {
|
var sharedModelContainer: ModelContainer = {
|
||||||
let schema = Schema([
|
let schema = Schema([
|
||||||
Item.self
|
Todo.self
|
||||||
])
|
])
|
||||||
let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)
|
let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
import Foundation
|
|
||||||
import SwiftData
|
|
||||||
|
|
||||||
@Model
|
|
||||||
final class Item {
|
|
||||||
var timestamp: Date
|
|
||||||
|
|
||||||
init(timestamp: Date) {
|
|
||||||
self.timestamp = timestamp
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
import Foundation
|
||||||
|
import SwiftData
|
||||||
|
|
||||||
|
/// Represents a todo task created by a user.
|
||||||
|
@Model
|
||||||
|
final class Todo {
|
||||||
|
|
||||||
|
// MARK: Properties
|
||||||
|
|
||||||
|
/// A date when the todo was completed, if applicable.
|
||||||
|
var completed: Date?
|
||||||
|
|
||||||
|
/// A date by which the todo should be completed.
|
||||||
|
var due: Date
|
||||||
|
|
||||||
|
/// An optional note providing additional details about the todo task.
|
||||||
|
var note: String?
|
||||||
|
|
||||||
|
/// The title of the todo task.
|
||||||
|
var title: String
|
||||||
|
|
||||||
|
// MARK: Initializers
|
||||||
|
|
||||||
|
/// Creates a new todo item.
|
||||||
|
/// - Parameters:
|
||||||
|
/// - title: The title of the todo item.
|
||||||
|
/// - note: An optional note providing additional details.
|
||||||
|
/// - due: The date by which the todo should be completed.
|
||||||
|
/// - completed: The date when the todo was completed, if applicable.
|
||||||
|
init(
|
||||||
|
title: String,
|
||||||
|
note: String? = nil,
|
||||||
|
due: Date,
|
||||||
|
completed: Date? = nil
|
||||||
|
) {
|
||||||
|
self.completed = completed
|
||||||
|
self.due = due
|
||||||
|
self.note = note
|
||||||
|
self.title = title
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -7,7 +7,7 @@ struct ContentView: View {
|
|||||||
private var modelContext
|
private var modelContext
|
||||||
|
|
||||||
@Query
|
@Query
|
||||||
private var items: [Item]
|
private var items: [Todo]
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
NavigationSplitView {
|
NavigationSplitView {
|
||||||
@@ -43,7 +43,7 @@ struct ContentView: View {
|
|||||||
|
|
||||||
private func addItem() {
|
private func addItem() {
|
||||||
withAnimation {
|
withAnimation {
|
||||||
let newItem = Item(timestamp: Date())
|
let newItem = Todo(title: "New Todo", due: Date())
|
||||||
modelContext.insert(newItem)
|
modelContext.insert(newItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,5 @@ struct ContentView: View {
|
|||||||
|
|
||||||
#Preview {
|
#Preview {
|
||||||
ContentView()
|
ContentView()
|
||||||
.modelContainer(for: Item.self, inMemory: true)
|
.modelContainer(for: Todo.self, inMemory: true)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user