《Swift入门经典(第2版)》——1.2 起步

    xiaoxiao2024-03-30  9

    本节书摘来自异步社区《Swift入门经典(第2版)》一书中的第1章,第1.2节,作者:【美】BJ Miller(BJ 米勒)著,更多章节内容可以访问云栖社区“异步社区”公众号查看

    1.2 起步

    此时,最重要的假设是你已经具有一台Mac计算机,如果没有它,将不能安装Xcode,它是Apple的Mac和iOS集成开发环境(Integrated Development Environment,IDE)。注意:下载Xcode

    Xcode 7是从Mac App Store免费下载的,必须具有Mac OS X 10.10.4或更高版本。尽管可以在Xcode 6.x中编写Swift代码,但是本书还将包括Swift版本2.0,它需要Xcode 7。在Mac上启动App Store应用,搜索Xcode,然后单击安装软件。一旦安装完成,Xcode就会列在/Applications目录中。

    1.2.1 四处看看在打开Xcode时,可能会询问你是否想安装额外的工具;继续前进并安装它们。应该只有在第一次启动Xcode时才会发生这种情况。一旦打开了Xcode,就会看到一个标准的菜单窗口,其中有一些选项,用于创建playground、创建新项目或者打开现有的项目,右边是最近的项目和打开的playground(如果打开了任何playground)的列表。窗口现在应该如图1.1所示。

    尽管在本书中主要在playground中工作,但是熟悉一下IDE是有好处的,因此就让我们快速完成这个任务。单击Create a New Xcode Project,创建一个新的Xcode项目。下一个界面询问你想要创建的项目类型,对于这个试验,仅须使用Single View Application,如图1.2所示,然后单击Next按钮。

    接下来,将要求命名项目。选择Organization Name、Identifier、Language(Swift或Objective-C)以及要运行项目的设备。这里还可以指示是否想要使用Core Data,或者包括Unit Tests和UI Tests,如图1.3所示。所有这些信息对于你将来创建的项目都是有用的,但是出于测试目的,我们还不需要关心它们,可以使这些复选框保持原样。Organization Identifier通常是个人或公司URL的反向DNS名称,用于在组织级确保唯一性。Bundle Identifier把Project Name附加到Organization Identifier末尾,用于确保每个应用包的唯一性。一旦把应用提交给Mac App Store或iOS App Store,包标识符就需要是唯一的。

    在这里,还可以选择设备类型,比如iPhone或iPad,以便于Xcode可以正确地创建设备所需的故事板(Storyboard)文件,这些设备将使用你计划编写的应用。这样,就可以把不同设备上的不同接口作为目标,但是仍然使用相同的代码管理它们,比如利用Universal应用。

    把项目命名为TestApp,因为我们只想熟悉Xcode(可以在以后删除这个项目)。一般来说,如果选择不含空格的项目名称,后面就可能遇到更少的麻烦。对于Language选择Swift,并单击Next按钮。Xcode将会打开,并且可以看到你创建的新项目。它应该如图1.4所示。

    图1.4 初始的Xcode IDE布局。左边是导航窗格(Navigation Pane),右边是检查器窗格(Inspector Pane),中间是主要内容区。顶部工具栏中是一些按钮,用于运行或停止生成,查看错误和警告信息,以及显示或隐藏视图

    Xcode被漂亮地划分成几个合乎逻辑的区域,就像在其他IDE中你可能所习惯的那样。不过,它还有一些非常好的特性要注意。左边的窗格称为导航窗格。在这里,可以选择不同的导航器,查看项目中的文件、警告和错误、断点、单元测试(Unit Test)等。右边的窗格称为检查器窗格,这个动态窗格依赖于单击的是什么元素而改变,比如编辑所选按钮的文本属性,或者在窗口中调整控件的位置。

    在处理实际的Mac/iOS项目时,将把大多数时间花在中间的主要内容区中。在内容区中,可以更改项目设置,最重要的是,通过编写代码或者在Storyboard(故事板)中设计界面来创建应用。

    左上方的栏中提供了几个有用的功能。从左边起,具有用于窗口管理的标准Mac Red/Yellow/Green(红/黄/绿)按钮。接下来,当涉及编译、生成以及在仿真器(Simulator)或设备上运行你的应用时,播放和停止按钮将实际地生成以及运行和停止。右边用于通知当前的信息,比如项目中有多少个警告或错误,以及生成状态。

    最后,右上方的按钮组可以调整你查看的视图,以显示或隐藏导航窗格、检查器窗格、调试窗格(Debug Pane)或辅助编辑器,以及查看代码比较、源代码“查错”视图和日志。

     注意:查看两个文件

    Assistant Editor(辅助编辑器)把内容区分成两半,以便可以同时查看两个文件。这是有益的,例如,当你可能在编写单元测试以及使单元测试通过的代码时,或者当你在故事板中创建用户界面并且打开了相应的视图控制器(View Controller)以连接动作(Action)和出口(Outlet)时。有关利用自定义界面开发应用的更多知识,建议阅读John Ray的图书Sams Teach Yourself iOS Application Development in 24 Hours(Sams Publishing出版)。1.2.2 Xcode playgroundXcode的优秀的主要特性之一是playground。playground是一个便笺本,如果你愿意,在把代码添加到应用之前,可以使用它测试代码,以确保你从代码段接收到正确的结果。playground的这种功能如此强大,如果你的代码将给你提供期望的结果,那么就可以获得立即的反馈,而不必编译代码并在仿真器或设备上运行它。

    可以随时创建新的playground,并且可以选择使之成为项目的一部分,或者只是作为一个独立的playground文件。由于我们已经位于一个打开的项目中,因此可以单击File→New→ File,然后在文件的Source(源)集(用于iOS或Mac)中选择playground,接着单击Next按钮。在Save As对话框中,命名playground文件(出于我们的目的,名称MyPlayground就很好),然后单击Create按钮。目前不用关心Group或Target;我们还没有生成应用,因此不用关心它们。

     注意:Mac或iOS playground

    在从Mac区域或iOS区域创建playground时,文件结构中存在一些区别。创建一个Mac playground将会在文件的顶部添加import Cocoa语句,并且使Mac框架和模块可供使用。创建一个iOS playground将在文件的顶部添加import UIKit语句,并且使iOS框架和模块可供使用。初看上去,两种playground并没有什么区别。如果创建iOS playground,但是不想测试Mac应用代码,或者刚好相反,则只需创建一个期望类型的新playground即可。注意,新的playground带有几行Swift代码,以便于你学习。在继续学习后面的内容之前,让我们先介绍其中一些基础知识。playground应该如下所示。

    //: Playground - noun: a place where people can play import UIKit var str = "Hello, playground"

    上面代码中的第一行是注释,它会被编译器忽略。可以使用注释给代码的某些部分加注解,使得人类能够轻松地读懂它们,也许是给其他同事(或者甚至是你自己)解释代码的这个特定部分是用于什么的。//(双正斜框)意指将把行中余下的内容视作注释。还可以注释整个代码区域或文本段落,它们可以在同一行或者多个连续的行上,只须利用/和/括住它们即可。Swift甚至允许在注释块内嵌套注释块,比如/ ... / ... / ... /。

    上述代码中的余下部分执行一个简单的任务,它把字符串"Hello, playground"分配给变量str。即使代码没有直接把任何内容输出到控制台,playground默认也会在playground的结果窗格中显示“Hello, playground”,以显示变量以及你创建的任何后续变量或常量的内容。当你想测试逻辑、数学及其他操作时,这将很方便。

    还值得指出的是:变量str前面带有关键字var。var关键字可以让Swift知道str是一个变量,可以更改其内容。要创建常量或者可变的变量,可以使用关键字let代替var。

    TRYITYOURSELF

    在playground中创建前几行Swift代码

    此时,当你身处playground中时,试验前几行代码是有意义的,因此让我们在这里全部试验一下它们。

    (1)在playground中,把以下代码输入到一个新行上。

    let myNewValue = 40 + 2(2)注意playground的右边显示“42”。输入如下代码行,以在句子里面插入值。

    print("My new value is \(myNewValue).")(3)要在控制台中查看输出结果,可以单击View菜单,然后单击Debug Area,再单击Show Debug Area。Debug Area在界面底部现在是可见的,并且你应该会看到print()语句的输出。

    "My new value is 42."祝贺!你已经编写了前几行Swift代码。

    在上面的“TRY IT YOURSELF”示例中,在第(1)步中把值42赋予myNewValue。然后,在第(2)步中,使用称为字符串插值(string interpolation)的方法,把该值插入一个句子里,这是一种在输出内插入变量或常量的便捷方式。下一章将更详细地讨论字符串插值。print()语句把输出结果显示到控制台,这对于快速调试或者查看数据的内容很方便。

     注意:删除Xcode项目

    如果你想要删除这个Xcode项目(或者你可能不再想要的任何Xcode项目),可以简单地在文件系统上删除包含文件夹。假如你把这个项目保存在~/Documents/TestApp中,那么只须从Documents目录中删除TestApp文件夹即可。1.2.3 Swift REPLSwift还具备一个称为REPL(Read-Eval-Print-Loop,读取-求值-输出-循环)的优秀特性。REPL是我们刚才体验的playground的一个基于命令行的交互式版本。REPL非常适合于快速测试,以确保代码按预期的那样工作,类似于利用playground所得到的结果,但它不会在项目中创建一个新文件,只能把这个临时性的REPL用于进入、测试代码和离开。至于是使用playground还是使用REPL,主要依赖于你更偏爱哪个工具。如果你已经在使用Terminal.app,或者一些其他的命令行实用程序,只打开REPL对你来说可能更容易。另一方面,如果你已经身处Xcode中,那么只创建一个playground并从那里开始可能更快速。

    要访问REPL,只须输入以下代码。

    $> xcrun swiftxcrun是由Xcode提供的一个命令行工具,用于运行或定位开发工具或属性。因此,上面的代码行用于告诉xcrun运行Swift REPL。当按Return键时,将会看到如下所示的内容(你的版本号可能有所不同)。

    Welcome to Apple Swift version 2.0 (700.0.57 700.0.72). Type :help for assistance. 1>

    1>是Swift REPL提示符,可在此处开始输入Swift代码,每行一条指令,并且它会为你解释你的代码,与playground所做的非常像。让我们试试另一个编写代码的示例,这一次是在Swift REPL中进行。

    TRYITYOURSELF

    使用Swift REPL把两个字符串结合在一起

    让我们在这里编写另一个包含一些Swift代码的示例;希望这个示例仍然不太难。如果你没有完全理解它,也不要担心;下一章将非常详细地介绍它。

    (1)在Mac上打开Terminal.app。

    (2)在Terminal中输入xcrun swift,然后按Return键。

    (3)在1>提示符下,输入以下代码。

    let firstHalf = "I’m writing Swift code," let secondHalf = "and I’m so excited!" let combined = firstHalf + secondHalf

    (4)注意每次按Return键时,Swift的REPL如何显示我们使用的常量或变量的名称、它的数据类型String(第2章将介绍数据类型)以及它的值。

    (5)看看如何使用“+”运算符把两个字符串连接在一起。Swift足够智能,知道即使我们处理的是字母字符(不同于数字相加),“+”运算符也会把String实例相加起来。第3章将介绍关于运算符的更多知识。

    你干得很棒!Swift REPL将在REPL会话期间把常量和变量一直保存在内存中。这意味着以后可以多次引用变量和常量,在实际的应用中编写代码之前,这将可以帮助你致力于快速、轻松地处理问题。完整的“TRY IT YOURSELF”示例应该如图1.5所示。

    要退出Swift REPL,可以输入冒号(:)调用命令模式,然后输入q用于退出,并按Return键。这将返回常规的UNIX shell提示符。

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)