Сначала я расскажу о некоторых основах разработки приложений в первой части, затем отвечу на ваш вопрос во второй части и, наконец, объясню, почему я представил основы разработки приложений из первой части.
Доменная модель
Обычно, когда вы создаете приложение, вы сначала определяете модель.
Объект модели группирует данные, необходимые для конкретной проблемной области
или тип решения, которое вы пытаетесь построить. Они состоят из свойств, которые представляют атрибуты типа, и у них иногда есть методы для обновления и изменения своих собственных свойств.
В большинстве случаев вы создаете объект модели, определяя новую структуру или класс. И вы обычно определяете структуру или класс в новом файле Swift.
Это отрывок из Unit 4.3 Model View Controller из Разработка приложений с помощью Swift - Apple Education. Очень интересная книга, если вы новичок в разработке приложений.
Модель элемента todo в вашем приложении может выглядеть следующим образом:
struct TodoItem: Codable {
let content: String
let creationDate: Date
init(with string: String) {
content = string
creationDate = Date()
}
}
Сохранение элементов todo с датами создания
Теперь, чтобы ответить на ваш вопрос о том, как сохранить разные вопросы с соответствующей датой их создания, рекомендуется хранить эти вещи и в вашей модели. Например, вы можете создать новый массив для хранения всех различных TodoItem
с (повторное использование TodoItem
из моего предыдущего примера), например:
var todoList = [TodoItem]()
Когда пользователь создает новый элемент: добавьте TodoItem
к todoList
, используя
todoLists.append(TodoItem(with: someUserContent))
Мотивация
- Определив свою модель в качестве структуры
TodoItem
и todoList
, вы теперь можете быть уверены, что при каждом обращении к списку элементов соответствующая дата создания будет точной датой создания элемента. Это потому, что мы объявили creationDate
константой.
- Путем согласования структуры
TodoItem
с Codable
Теперь вы можете использовать такие библиотеки, как Nirma / Default , чтобы легко сохранять и извлекать todoList
в и из пользовательских значений по умолчанию.
- Поскольку у вас теперь есть массив, содержащий все ваши todoItems, очень легко отобразить эти даты в вашем ярлыке, используя:
.
dateLabel.text = dateFormatter.string(from: todoList[itemIndex].creationDate)