gpt4 book ai didi

arrays - 返回数组引用的 Swift 函数

转载 作者:行者123 更新时间:2023-11-28 15:38:21 25 4
gpt4 key购买 nike

我对 Swift 还很陌生,所以要温和...

我有一个名为 ProgramOptions 的类,如下所示:

class ProgramOptions {
var startDate: Date = Date()
var trackedActivities = [TrackedItem]()
var trackedFoods = [TrackedItem]()
var trackedDrugs = [TrackedItem]()
...
}

TrackedItem 是我的另一个类。

在 TableViewController 的代码中,我想根据所讨论的表格部分从 ProgramOptions 的实例中选择一个数组。然后我想做很多可能的事情,比如删除或添加项目、编辑它们等。

作为一个 Swift 初学者,我天真地写了这个函数:

func trackedArrayForSection(_ section: Int) -> [TrackedItem]? {
switch(section) {
case 1: return programOptions.trackedActivities
case 2: return programOptions.trackedFoods
case 3: return programOptions.trackedDrugs
default: return nil
}
}

(第 0 节和第 > 3 节没有关联的数组,所以我返回 nil)

但残酷的现实让我痛苦。我猜数组是一个副本。 (或者我对 StackOverflow 上类似问题的薄弱理解表明它被有时 复制了。)

所以这是要问你的问题......我如何编写我的 trackedArrayForSection 以便我获得对位于 ProgramOptions 中的实际数组的引用,然后我可以从中添加和删除项目?

当然,我可以在每个使用它的地方都有一个 switch 语句,但是它们有将近无数个,我想避免这种情况。我假设对此有一个简单的答案,但我在这一点上太无知了。

感谢您的帮助!

最佳答案

我会将您的开关逻辑提取到您的类的实例方法中:

class ProgramOptions {
var startDate: Date = Date()
private var trackedActivities = [TrackedItem]()
private var trackedFoods = [TrackedItem]()
private var trackedDrugs = [TrackedItem]()

func trackedItems(forSection section: Int) -> [TrackedItem]? {
switch section {
case 1: return self.trackedActivities
case 2: return self.trackedFoods
case 3: return self.trackedDrugs
default: return nil
}
}

func add(trackedActivity activity: TrackItem){
self.trackedActivities.append(activity)
}
}

然后在您的 View 中您只需重新加载表格。

关于arrays - 返回数组引用的 Swift 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44055890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com