Как использовать date и dateFormatter в списке? - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь сделать простое приложение, которое при нажатии кнопки «Добавить» добавляет новую ячейку в список с заголовком и датой создания. Я создаю это практическое приложение с помощью 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()))
        }
    }
}

1 Ответ

1 голос
/ 12 июля 2020

Во-первых, это соглашение об именах Swift, чтобы ваши свойства начинались со строчной буквы.

Во-вторых, вам нужно исправить объявление средства форматирования даты:

static let dateFormatter: DateFormatter = { 
    let formatter = DateFormatter()
    formatter.dateStyle = .long
    return formatter
}()

Затем вы вызываете свой ContentView stati c свойство ContentView.dateFormatter.string(from: yourdate). В вашем случае:

Text(ContentView.dateFormatter.string(from: self.viewModel.items[index].createdAt))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...