如何在列表中使用 date 和 dateFormatter?
How to use date and dateFormatter in a list?
我正在尝试制作一个简单的应用程序,当按下“添加”按钮时,它会向列表中添加一个新单元格,其中包含标题和创建日期。我正在使用 mvvm 创建此练习应用程序,但我不知道如何正确使用 date 和 dateFormatter。以下代码是我的:
型号:
struct Model: Identifiable {
var id = UUID()
var title: String
var createdAt = Date()
}
视图模型:
class ViewModel: ObservableObject {
@Published var items = [Model]()
}
和视图:
struct ContentView: View {
static var DateFormatter: DateFormatter {
let formatter = self.DateFormatter
formatter.dateStyle = .long
return formatter
}
@EnvironmentObject var viewModel: ViewModel
var body: some View {
NavigationView {
List {
ForEach(0 ..< viewModel.items.count, id: \.self) { index in
VStack {
Text(self.viewModel.items[index].title)
Text(self.viewModel.items[index].createdAt)
}
}
}
.navigationBarTitle("Practice")
.navigationBarItems(trailing: Button(action: makeNew) {
Text("Add")
})
}
}
func makeNew() {
withAnimation {
viewModel.items.append(Model(title: "New Item \(viewModel.items.count + 1)", createdAt: Date()))
}
}
}
首先,Swift 命名约定是以小写字母开头的属性。
其次,您需要修复日期格式化程序声明:
static let dateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateStyle = .long
return formatter
}()
然后你调用你的 ContentView 静态 属性 ContentView.dateFormatter.string(from: yourdate)
。你的情况:
Text(ContentView.dateFormatter.string(from: self.viewModel.items[index].createdAt))
我正在尝试制作一个简单的应用程序,当按下“添加”按钮时,它会向列表中添加一个新单元格,其中包含标题和创建日期。我正在使用 mvvm 创建此练习应用程序,但我不知道如何正确使用 date 和 dateFormatter。以下代码是我的:
型号:
struct Model: Identifiable {
var id = UUID()
var title: String
var createdAt = Date()
}
视图模型:
class ViewModel: ObservableObject {
@Published var items = [Model]()
}
和视图:
struct ContentView: View {
static var DateFormatter: DateFormatter {
let formatter = self.DateFormatter
formatter.dateStyle = .long
return formatter
}
@EnvironmentObject var viewModel: ViewModel
var body: some View {
NavigationView {
List {
ForEach(0 ..< viewModel.items.count, id: \.self) { index in
VStack {
Text(self.viewModel.items[index].title)
Text(self.viewModel.items[index].createdAt)
}
}
}
.navigationBarTitle("Practice")
.navigationBarItems(trailing: Button(action: makeNew) {
Text("Add")
})
}
}
func makeNew() {
withAnimation {
viewModel.items.append(Model(title: "New Item \(viewModel.items.count + 1)", createdAt: Date()))
}
}
}
首先,Swift 命名约定是以小写字母开头的属性。
其次,您需要修复日期格式化程序声明:
static let dateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateStyle = .long
return formatter
}()
然后你调用你的 ContentView 静态 属性 ContentView.dateFormatter.string(from: yourdate)
。你的情况:
Text(ContentView.dateFormatter.string(from: self.viewModel.items[index].createdAt))