在将日期和一天中的时间保存在标签中时出现问题。我有一个TodoList,当我添加一些东西时,它会显示您执行操作的日期和时间。我要做的就是保存它。为了保存,我尝试使用用户默认值,但是我总是拥有日期和时间,而不是我的日期。我想我做错了。有什么建议可以保存日期吗?
@IBOutlet weak var Data: UILabel!
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
Data.text = String(describing: DateFormatter())
let dataFormatter = DateFormatter()
dataFormatter.dateFormat = "dd/MM/yy H:mm a"
Data.text = dataFormatter.string(from: .init())
UserDefaults.standard.setValue(Data.text!, forKey: "Data")
Data!.text=UserDefaults.standard.string(forKey: "Data")
}
答案 0 :(得分:0)
好的,据我所知,您有一个待办事项列表,您正试图节省每个项目的编辑时间。
UserDefaults 是一个键值对,从我看来,您正在尝试对所有单元格使用相同的键,这将意味着它们将相互覆盖。
还尝试在每次使用前覆盖现有的值,这是您想要的正确行为吗?
答案 1 :(得分:0)
我将在第一部分中首先介绍一些应用程序开发基础知识,然后在第二部分中回答您的问题,最后说明为什么我从第一部分介绍了应用程序开发基础知识。
通常在制作应用程序时,首先定义模型。
模型对象将特定问题域所需的数据分组 或您要构建的一种解决方案。它们由代表类型属性的属性组成,有时它们具有更新和修改其自身属性的方法。
在大多数情况下,您将通过定义新的结构或类来创建模型对象。通常,您将在新的Swift文件中定义结构或类。
这是App Development with Swift的单元4.3模型视图控制器的摘录-Apple教育。如果您是应用程序开发的新手,那将是一本非常有趣的书。
应用程序中待办事项的模型可能类似于:
struct TodoItem: Codable {
let content: String
let creationDate: Date
init(with string: String) {
content = string
creationDate = Date()
}
}
现在要回答有关如何保存具有相应创建日期的不同问题的问题,这是将这些问题也存储在模型中的一种好习惯。例如,您可以创建一个新的数组来存储所有不同的TodoItem
(如下例中的TodoItem
重复使用):
var todoList = [TodoItem]()
用户创建新项目时:使用{p>将TodoItem
添加到todoList
todoLists.append(TodoItem(with: someUserContent))
TodoItem
结构和todoList
,您现在可以确保每次访问项目列表时,相应的creationDate将是创建日期的确切日期。该项目。这是因为我们将creationDate
声明为常量。TodoItem
结构与Codable
一致,您现在可以使用Nirma/Default之类的库来轻松保存todoList
和从用户默认值中检索dateLabel.text = dateFormatter.string(from: todoList[itemIndex].creationDate)
。。
i