跳至内容

Swift 学习

来自维基教科书,开放世界中的开放书籍


本维基教科书

[编辑 | 编辑源代码]

这是一本面向初学者的 Swift 编程语言指南和参考书。它的目标是提供 Swift 及其技术的概述,以及学习起点的介绍。它旨在展示创建基本应用程序所需的基本概念概述,同时还为每个概念提供参考,以便在需要时找到更详细的信息。本书分为几个章节:

  • 基本概念:简单介绍该语言并定义 Swift 架构的主要概念。
  • 编程环境:介绍实践方面,描述环境(Xcode)并为初学者提供编程起点的建议。
  • 棘手部分:作者关于自动布局、上传到 AppStore 等方面的发现。

基本概念

[编辑 | 编辑源代码]

什么是 Swift?

[编辑 | 编辑源代码]

以下是该语言的简单描述:

  • 它是 Apple 创建的一种编程语言,旨在替代 Objective-C
  • 首次亮相于 Apple 2014 年全球开发者大会。
  • 设计用于与 Apple 产品的 Cocoa 和 Cocoa Touch 协同工作。

如需了解更多信息,您可以访问以下链接:什么是 Swift?

Swift 和 Objective-C 的主要区别

[编辑 | 编辑源代码]
  • 语法:Swift 更类似于 Ruby 或 Python 等高级语言。如果您不熟悉这些语言,请先阅读以下内容:快速参考指南
  • 泛型:可以处理任何参数的函数。它是 Swift 最强大的元素之一,值得阅读
  • 内存分配:Swift 不需要像 Objective-C 那样使用单独的内存分配方法。
  • 可选类型:是强制解包变量的不错替代方案。建议您至少阅读可选类型文档的第一部分:可选类型
  • Swift 与大多数 Objective-C 库兼容。

Swift 导航架构(窗口和视图)

[编辑 | 编辑源代码]

视图用于在屏幕上显示应用程序,但这些视图在 Apple 定义的层级结构中进行控制。要理解这一点,您首先需要了解该架构的组件。以下概念是您开始开发所需的基本知识,但在每个描述的末尾都有指向每个术语完整文档的链接,以备您需要更多信息。
故事板

在 Xcode 故事板中排列视图及其连接。
  • 故事板是您可以在其中图形化地创建和修改程序在屏幕之间的流程,并创建新元素的地方。故事板

视图控制器

  • 这些是管理应用程序显示的屏幕的数据和视觉外观的类。当 UI 显示时,内容由一个或多个 VC 管理,这就是为什么 VC 被称为 iOS 应用程序的“骨架框架”。
  • 程序员可以创建和自定义 VC 类来管理应用程序的行为。
  • 应用程序的第一个视图控制器称为根视图控制器。
  • 视图控制器)

导航控制器

  • 控制应用程序的导航及其流程的 VC 堆栈。
  • 包含和管理一组视图控制器,每个 VC 包含和管理一组视图;NC 的目的是协调 VC 之间的导航。
  • 导航控制器

总之,该层级结构概念可以解释如下:一个导航控制器控制多个视图控制器,一个视图控制器可以控制多个视图。导航中涉及的其他概念是:

标签栏控制器(TBC)

  • 通过直接管理视图控制器来帮助控制应用程序的导航。
  • 与导航控制器一样,它具有 VC 堆栈,并独立呈现它们,可以直接由 TBC 控制。
  • 标签栏

Segue(发音为“seg-way”)

  • 从一个屏幕过渡到另一个屏幕的连接和处理方式称为 Segue。

Xcode 6 中使用了几种不同类型的 Segue:
→ 推 Segue:将新的视图控制器添加到导航堆栈中,新的 VC 将成为导航控制器的一部分。
→ 模态 Segue:第一个 VC 呈现第二个 VC,不将其包含在导航控制器堆栈中。要解散它,需要父 VC 来处理。
Apple 对Segue有简短易懂的描述。在开始应用程序之前,请查看它,以便为您的程序选择合适的 Segue 类型。

Swift 是一种新语言,因此需要最新的更新才能正常运行。在开始之前,请确保您拥有以下内容:

  • 一台运行 Mavericks 或 Yosemite 的 Mac
  • Xcode 6

Xcode 是 Mac、iPhone、iPad 和 Apple Watch 的开发者工具集。使用此工具,您将能够创建和管理 Swift 项目,以及在模拟器中运行您的应用程序。

Xcode IDE 的不同部分。

您必须了解 Xcode 项目的各个部分如何协同工作,但这需要通过经验和与 Xcode 的交互来获得。以下是一个图形化和文字化的说明

  • 导航器区域:显示项目文件和设置。
  • 编辑器区域:显示文件的中心区域。
  • 工具区域:可以修改对象工具和标识的区域。
  • 工具栏:包含运行按钮和活动查看器的区域。

XCode 项目结构

  • XCode 不会对应用程序代码树强制执行定义的结构。但是,当您创建一个新项目时,会创建三个默认文件夹:主应用程序文件夹、测试文件夹和产品文件夹。
  • 您还可以创建组来组织工作,或使用文件夹来保持程序环境的整洁。

开始编程

[编辑 | 编辑源代码]

Apple 在其网站上提供了包含教程的全面文档。对于入门,这里有一个教程,其中解释了基本概念,以及图像、示例和概念定义。可以在 此处 找到该教程。这是一个良好的入门方法,但如果您继续他们的教程系列,则会花费很长时间,并且可能很无聊且没有必要。
学习新编程语言最有效的方法之一是查看任何教程中提供的示例,因为大多数示例都是待办事项列表实现,这些实现展示了如何连接 Segue 并返回到原始视图控制器以显示信息。
Jack Watson 的教程系列 为简单的应用程序逐步解释了 Swift 的功能。希望这会更快地阅读!

将元素添加到您的项目中

[编辑 | 编辑源代码]

添加库:对于内置库,Xcode 有一个 5 步的 过程

添加文件:使用 Xcode,您可以直接将 Finder 窗口中的文件拖放到 Xcode 导航区域中的项目文件夹中。

配置开发

[编辑 | 编辑源代码]

对于在 Xcode 中编程并在模拟器中运行您的应用程序,不需要证书,但您必须创建帐户。但是,当您想要在自己的设备上测试应用程序时,需要开发者证书,并且您还需要在设备上安装相关的配置文件以使应用程序能够运行。正如 网站 中所述,iOS Developer Program 允许您将应用程序安装到最多 100 台 iPad、iPhone 或 iPod touch 设备上。

配置部署

[编辑 | 编辑源代码]

为部署配置应用程序是开发过程中最棘手的部分之一,因此您应该遵循并阅读本 指南 中的每个步骤。此过程需要付费许可证才能进行部署。开发者许可证不能用于将应用程序上传到商店;您必须至少拥有一个注册的设备开发许可证才能被允许上传应用程序。

棘手部分

[编辑 | 编辑源代码]

自动布局

[编辑 | 编辑源代码]

随着 Apple 发布更多具有不同屏幕尺寸的移动产品,对使用一个设置即可适用于所有屏幕的实现的需求越来越大。

对于自动布局,会定义和配置约束以动态定位视觉元素。

自动布局是开发人员一直避免使用的工具,但实际上并不那么难。

首先快速介绍一下尺寸类:故事板中的屏幕、视图和视图控制器都有尺寸类。这对应于目标设备的方向和屏幕,水平和垂直方向有三个值。

  • 常规高度和常规宽度
  • 紧凑高度和紧凑宽度
  • 任何高度和任何宽度

开发任何高度和任何宽度将允许您支持所有屏幕尺寸。但需要相对约束来设置视图中元素的位置。现在,如果您决定不想为不同的设备开发,请转到下一节。否则,启用自动布局并开始使用其功能!Ray Wenderlich 提供了正确的指南。
. 在这里,您可能需要向下滚动页面,直到到达“自动布局来拯救!”,从那里开始真正的解释。

视图控制器之间的通信(设计模式)

[编辑 | 编辑源代码]

Swift 最令人困惑的问题之一是通过视图控制器传递信息,因此这里有三种简单的方法可以做到这一点。

对于用户交互和数据输出,视图上的视觉元素与控制器中的代码相连接。
  • 单例:在程序运行期间会创建一个该类的单个实例,可以使用任何其他类中的类的实例化来访问它。可以在这里存储诸如网络通信和登录之类的信息。
  • 观察者(委托):这是 Swift 中最常用的模式之一,一个视图控制器被设置为观察者,当观察类需要处理返回的数据时,它可能是通知或变量,观察类会调用观察者方法。这通常用于当包含信息的视图控制器是需要该信息的观察者视图控制器的子级时。
  • 在调用 VC 时发送数据或对象:这是最简单的方法,当调用 Segue 时,会调用 prepareForSegue 方法,并且可以访问下一个视图控制器。这用于当一个视图控制器中的一个或几个变量需要在下一个视图控制器中使用时。代码如下
 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {        
     if segue.identifier == "segueName" {
           let nextViewController = segue.destinationViewController as ViewController
           nextViewController.atribute = dataToSend
     }
 }
 segueName is the name you gave the segue when you created it. 
 atribute is a variable present in the next segue where the data you want to sell is going to be stored. 
 dataToLend is the data/variable you are trying to send

Segue 的管理

[编辑 | 编辑源代码]

Segue 负责程序流程,因此您应该注意处理它们的正确方法。

创建调用 Segue

[编辑 | 编辑源代码]

Segue 可以通过编程方式调用,也可以使用 XCode 的助手调用,Segue 是使用 Xcode 助手创建的,您只需选择源视图,按住 Ctrl 键,然后将显示在第二个视图中的线条拖放到该位置,然后会弹出一个菜单,您可以在其中选择要使用的 Segue 类型。通过单击 Segue,可以在实用程序区域中为其指定一个名称。

  • 以编程方式,可以这样调用 Segue:(如果您使用这种方法,则父视图控制器负责关闭子视图控制器,而不是导航控制器)
 performSegueWithIdentifier("segueIdentifier", sender: nil)
  • 从 Xcode 助手,可以将 Segue 分配给根据视图元素中的操作开始,例如,如果选择的是按钮而不是整个视图,请按住 Ctrl 键并将线条拖放到下一个视图控制器,则在按下按钮时会调用 Segue。

关闭 Segue

[编辑 | 编辑源代码]

如果您想管理应用程序的内存使用情况,这是一个重要的步骤,因为它会将视图从堆栈中弹出,释放视图控制器持有的内存。关闭操作可以由 NC 或以编程方式处理。

  • 通过导航控制器:通常,普通的“显示”Segue 可以通过按下出现在屏幕顶部导航栏中的后退按钮自动关闭,NC 会关闭视图控制器。
  • 通过代码:需要将 ViewController 从堆栈中弹出以显示。弹出所有 View Controllers 的调用示例如下
     self.navigationController!.popToRootViewControllerAnimated(true) // pops all View Controllers until the root view controller is reached
     self.navigationController!.popViewControllerAnimated(true) // pops the las view controller

下一步

[编辑 | 编辑源代码]

所以,现在您已经了解了基础知识,您可以开始使用相机或二维码阅读器等流行功能实现应用程序。在下表中,您可以找到关于此主题以及更多内容的优秀教程。

其他值得一看的网站

[编辑 | 编辑源代码]
主题 描述 链接
图形用户界面 这里涵盖了从视图元素到自动布局的概念 链接
长期教程 这是一个众所周知的免费教程,面向学生,最近为 Swift 编写 链接
相机教程 描述了如何在 Swift 中控制相机

链接

华夏公益教科书