几乎可以肯定有一种更好的方法,我很想知道,但是我不能在一个问题中用语表达,所以本质上这是我的问题:
我正在创建一个显示项目列表的应用程序(在表视图中),其中包含与项目(String Int Date ect)一起附带的各种数据。我决定最好的存储方法是在结构中,因为它允许我存储丢失的不同类型的数据以及在其上运行进程。
问题是,从理论上讲,我想在列表中包含无数个项目,因此我需要丢失Item
结构的实例而无需预先确定每个实例的名称。
然后我将这些实例名称存储在数组中,以便可以在表视图中列出它们。
我已经花了数小时寻找了这一点,但我完全无法理解,我确信它非常简单,因为数百个应用程序都需要这样做。我愿意接受任何感谢。
当前,我有一个结构:
struct Item() {
var data1: String
var data2: String // (But Should be Int)
var data3: String
func setDate() {
// code
}
func returnDate() {
// code
}
}
然后在视图控制器中,我有:
@IBAction func SubmitButton(_ sender: UIButton) {
var textField1 = Item(data1: textField1.text!, data2: textFeild2.text!, data3: "Units")
print(textField1.data1)
}
我不确定您的目标是什么,但我想最终的目标是要有一个您的项目对象的数组,然后可以将其用于填充UITableView
???是否没有为此实例设置名称?
最简单的解决方案是创建一个[[array作为Class Property
,用于存储所有空的项目,如下所示:
var items : [Item] = []
然后在。viewDidLoad()
中,您可以调用一个函数,该函数用所有可用的项目填充项目数组。然后,可以使用此项目数组来填充UITableView
第二部分:
您获得了创建新项目的IBAction。我想这应该是在现有项目上添加一个新项目。您可以使用]将此新项目添加到现有项目数组中>items.append(Item(<parameters>))
并且不要忘记重新加载UITableView以包括新数据。
tableView.reloadData()