Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Swift中实现MVC?_Ios_Swift_Xcode_Model View Controller - Fatal编程技术网

Ios 如何在Swift中实现MVC?

Ios 如何在Swift中实现MVC?,ios,swift,xcode,model-view-controller,Ios,Swift,Xcode,Model View Controller,我一直在构建Swift应用程序,基本上所有功能都在ViewController中。我知道这不是最好的方法,因为设计模式可以帮助你扩展应用程序,但我并不真正理解它们。我一直在读关于拆分模型、视图和控制器的文章,但这些文章没有给我关于如何拆分的答案 目前我正在开发一个应用程序。我再次制作了ViewController中的所有函数,但我将函数分为三个部分 我的整个应用程序如下所示: //Model func stopMonitoring(_ song:Song) { for region in

我一直在构建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))
}
如何将其转化为模型-视图-控制器设计



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

您需要花更多的时间来理解MVC体系结构

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

V=视图。在iOS应用程序中,视图使用故事板设计(理想情况下),或者在运行时使用代码创建

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

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


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

这里有一个很好的教程:复制:非常感谢。我仍在为此挣扎。我似乎不知道函数的实际用途。例如,函数stopMonitoring是否应该放在一个完全独立的类中,如果是,该类应该是什么?(这也是我参与分享立场的地方)。此外,对于函数addToView,是否应保留在控制器类中?提供用户和UI之间交互的所有函数都需要在控制器中编写,从数据访问层获取数据以填充UI元素的函数也需要在控制器中编写。任何更新UI
addToView
的函数都只能在控制器中编写。sharedInstance应该独立于UI实现,这样就可以在那里使用助手类。所以我想我已经将我的应用程序拆分为MVC,但我仍然有一个绝对庞大的控制器类(只是我主视图的视图控制器)。我应该把它分成更多的控制器吗?如果是这样的话,是否有一种特定的方法来拆分它们,我是否只需要构建新的类并从其他类获取对它们的引用?