难以理解Xcode Swift文件和Struct类声明

时间:2019-10-21 13:44:01

标签: swift swiftui

我正在同时学习Swift和SwiftUI。我有一些编程经验,但是我的背景是函数式编程,所以OOP对我来说仍然是新手。我已经观看并跟踪了SwiftUI上来自编码人员的一些视频,我觉得使用控件和修饰符是有意义的。但是,当我准备构建应用程序时,我认为有必要在自己的Swift文件(作为结构)中构建数据结构,然后实例化并将“测试数据”传递给ContentView,这样我就可以继续工作了。并了解如何以所需的方式构建视图。目前正在试图理解的困惑是,我应该在哪里定义我的数据模型,并在哪里实例化它并用数据填充它,然后如何将其传递到我的内容视图。我希望这是有道理的。如果我有一个单独的文件PlayerView.swift并在其中为“播放器”定义我的结构,然后声明一个变量testdata = PlayerView()然后填充testdata.name =“ Stephen”,例如testdata GLOBAL是其余的swift环境。同样,将其作为单独的文件让我感到困惑,因为我不了解全局/变量范围。

3 个答案:

答案 0 :(得分:0)

确定首先,第一件事-您要寻找的是对结构进行建模。所以我建议先研究一下MVC,当您完全了解MVC之后再寻找MVVM

MVC-模型视图控制器模式

视图-PlayerView-在这里您应该具有所有与视图相关的方法

Model:制作PlayerModel-创建结构“播放器”

控制器-启动模型或用“声明变量testdata = PlayerView()”来表达您的想法

完全了解此模型后,请尝试了解MVVM。

答案 1 :(得分:0)

结构和类是在应用程序中存储数据和建模行为的不错选择,但是结构和类的相似性使其很难选择一个。

在向您的应用添加新数据类型时:

  • 默认使用结构。
  • 需要Objective-C互操作性时使用类。
  • 需要控制数据身份时使用类 建模。
  • 使用结构和协议通过共享来采取行为 实施。

结构可以包括存储的属性,计算的属性和方法。此外,Swift结构可以采用协议来通过默认实现获得行为。 Swift标准库和Foundation使用您经常使用的类型的结构,例如数字,字符串,数组和字典。

何时需要使用课程

  

如果您使用需要处理数据的Objective-C API,或者   需要使您的数据模型适合已定义的现有类层次结构   在Objective-C框架中,您可能需要使用类和类   继承来建模数据。例如,许多Objective-C   框架公开了您应该继承的类。

或者当我们需要控制身份时,我们使用类来对数据进行建模。身份运算符(===)仍将类视为不同。这也意味着,当您在应用中共享一个类实例时,对该实例所做的更改对于包含对该实例的引用的代码的每一部分都是可见的。
例如,如果您有一个表示本地数据库连接的类型,则用于管理对该数据库访问权限的代码需要完全控制从应用程序查看的数据库状态。在这种情况下,使用类是适当的,但请确保限制应用程序的哪些部分可以访问共享数据库对象。

什么时候需要使用Struct

  • 在对包含信息的数据进行建模时使用结构 关于具有您无法控制的身份的实体。
  • 使用结构和协议对继承和共享行为进行建模

    结构和协议只能采用协议,而不能从类继承。

推荐Choosing Between Structures and Classes

答案 2 :(得分:0)

在SwiftUI中,通常的方法是将模型数据类编写为ObservableObject,然后将其注入应用程序的Environment中,以便所有视图结构均可使用。