【问题标题】:How to implement MVC in Swift?如何在 Swift 中实现 MVC?
【发布时间】:2017-04-30 03:28:10
【问题描述】:

我一直在构建 Swift 应用程序,基本上所有功能都在 ViewController 中。我知道这不是最佳方式,因为设计模式可以帮助您扩展应用程序,但我并不真正了解它们。我一直在阅读有关拆分模型、视图和控制器的文章,但这些文章并没有给出如何做到这一点的答案。

目前我正在构建一个应用程序。我再次在 ViewController 中创建了所有功能,但我将这些功能分成了三个部分。

我的整个应用是这样拆分的:

//Model
func stopMonitoring(_ song:Song) {
    for region in locationManager.monitoredRegions {
        guard let circularRegion = region as? CLCircularRegion, circularRegion.identifier == song.identifier else { continue }
        locationManager.stopMonitoring(for: circularRegion)
    }
}

//View
func addToView(_ song:Song){
    mapView.addAnnotation(song)
    mapView.add(MKCircle(center: song.coordinate, radius: song.radius))
}

如何将其转变为模型-视图-控制器设计?


我的想法是为每个类创建单独的类并始终加载它们,但我在控制器类中有变量,我在它们中都使用了这些变量,这似乎不是一种有效的处理方式。我也听说过共享实例,但还是不知道它们是如何发挥作用的。

【问题讨论】:

标签: ios swift xcode model-view-controller


【解决方案1】:

您需要花更多时间来理解 MVC 架构。

M = 模型,这是将在您的整个应用程序中使用的数据对象。它是具有属性的“实体”,例如产品、用户、歌曲等。

V = 视图。在 iOS 应用中,视图是使用 Storyboard(理想情况下)设计的,或者是在运行时使用代码创建的。

C = 控制器。它提供了模型、UI 元素(视图)和业务逻辑之间的交互。控制器与故事板中的视图相关联。

您必须设计一个业务层,将数据提供给控制器并使用值填充模型。多年来,我一直在使用这种方法构建可扩展的 iOS 应用程序,并通过维护现有功能帮助轻松地在应用程序中添加功能。

如果需要更多帮助,请告诉我。

【讨论】:

  • 非常感谢。我仍在为此苦苦挣扎。我似乎没有得到的是函数的实际去向。例如,函数 stopMonitoring 是否应该放在一个完全独立的类中,如果是,那么该类应该是什么? (也是我涉及sharedInstance的地方)。另外对于函数 addToView 应该保留在控制器类中吗?
  • 所有提供用户和 UI 交互的功能都需要写在控制器中,从数据访问层获取数据以填充 UI 元素的功能也需要写在控制器中。任何更新 UI addToView 的函数都应该只写在控制器中。 sharedInstance 应该独立于 UI 实现,因此可以在那里使用 Helper 类。
  • 所以我想我已经将我的应用程序拆分为 MVC,但我仍然有一个绝对庞大的控制器类(只是我的主视图的视图控制器)。我应该把它分成更多的控制器吗?如果是这样,是否有特定的方法来拆分它们,我是否只是构建新类并从其他类中获取对它们的引用?
猜你喜欢
  • 2015-11-30
  • 2014-09-07
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多