【问题标题】:How to use date and dateFormatter in a list?如何在列表中使用 date 和 dateFormatter?
【发布时间】:2020-07-11 22:47:58
【问题描述】:

我正在尝试制作一个简单的应用程序,当按下“添加”按钮时,它会在列表中添加一个新单元格,其中包含标题和创建日期。我使用 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 date mvvm swiftui dateformatter


    【解决方案1】:

    首先,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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-23
      • 2020-10-07
      • 2013-02-18
      • 2020-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-10
      相关资源
      最近更新 更多