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

标签 arrays swift

我对 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/

相关文章:

重新打开应用程序后动画未开始?

ios - Swift 3 UITapGestureRecognizer 没有收到水龙头

javascript - 在 Javascript 中添加未定义数组的总和

php - 函数仅返回 mysqli 查询结果的第一个数组值

javascript - 从字典数组 JavaScript 中获取键的值

ios - MPMoviePlayerViewController 视频无法在 ios 中使用 URL 播放

ios - Swift - 获取下一个日期

java - 我的代码生成器无法正常工作

arrays - Angularjs ng-repeat 数组 - 重复值

ios - 从 swift viewcontroller 调用 .c 文件中的 swift 函数