本节书摘来自异步社区《iOS 9应用开发入门经典(第7版)》一书中的第2章,第2.1节使用Xcode,作者 【美】约翰 雷(John Ray),更多章节内容可以访问云栖社区“异步社区”公众号查看
第2章 Xcode和iOS模拟器简介
iOS 9应用开发入门经典(第7版)
本章将介绍:
如何在Xcode中新建项目;
代码编辑和导航功能;
在什么地方给项目添加类和资源;
如何修改项目属性;
针对iOS设备和iOS模拟器编译应用程序;
如何解读错误消息;
iOS模拟器的功能和局限性;
在iOS模拟器中添加新设备。
您将在两个应用程序中完成主要的开发工作:Xcode和iOS模拟器,它们提供了设计、编写、测试iPhone和iPad应用程序所需的所有工具。另外,不同于其他平台,它们是完全免费的。
本章介绍使用Xcode代码编辑工具和iOS模拟器所需的基本知识,并让您获取一些使用它们的经验。Xcode的界面创建工具将在第5章介绍。
2.1 使用Xcode
当您需要编写代码(实际上是输入语句让iOS设备神奇地工作)时,应考虑使用Xcode。Xcode是一种集成开发环境(IDE),让您能够管理应用程序的资源,编辑将不同部分组合起来的代码和用户界面(UI)。
按第1章的说明安装开发工具后,便可在硬盘根目录的文件夹Applications或Launchpad中找到Xcode了。本章介绍Xcode工具的基本用法,如果您还没有安装这些工具,请现在就安装。
启动Xcode。经过一段时间后,将出现如图2.1所示的Welcome to Xcode窗口。
图2.1 在Welcome to Xcode窗口中新建或打开项目
可取消选中复选框Show this window when Xcode launches以禁止显示该窗口。第4章将详细介绍Xcode中的文档系统,它涉及的范围非常广泛。就现在而言,单击左上角的关闭按钮(X)退出欢迎屏幕。
2.1.1 创建和管理项目
大多数开发工作都以创建Xcode项目开始。项目是一系列与应用程序相关联的文件,还包含根据这些文件生成可运行软件所需的设置。这包括图像和源代码,还有一个这样的文件,即它描述了组成用户界面的对象及其外观。
1.选择项目类型
要新建项目,可在Xcode菜单中选择File>New Project(Shift + Command + N)。请现在就这样做,Xcode将要求您为应用程序选择一种模板,如图2.2所示。Xcode模板包含让您快速进行开发所需的文件。
虽然可从空白开始创建应用程序,但使用模板可节省大量时间。在本书中,将根据要创建的应用程序类型使用多种模板。
在New Project窗口的左侧,显示了可供选择的模板类别,我们的重点是类别 iOS Application,因此请确保选择了它。
右侧显示了当前类别中的模板以及当前选定模板的描述。就这里而言,请单击模板Single View Application(单视图应用程序),再单击Next(下一步)按钮。
您选择模板后,Xcode将要求您指定产品名、组织名和公司标识符。产品名就是应用程序的名称;组织名可以随意设置,如您的姓名或公司的名称;公司标识符通常是创建应用程序的组织或个人的域名,但按相反的顺序排列。产品名和公司标识符组成了束标识符,将您的应用程序与其他iOS应用程序区分开来。
例如,在本章中,我们将创建一个名为HelloXcode的应用程序,这是产品名。我的域名是teachyourselfios.com,因此将公司标识符设置为com.teachyourselfios。即便您没有域名,也必须输入点内容,因为这一项必须填写。
图2.2 要新建项目,首先需要选择合适的模板
将产品名设置为HelloXcode,再提供您选择的组织名和公司标识符。
从下拉列表Language中选择Swift(Apple首选的编程语言),并从下拉列表Device中选择您使用的设备(iPhone或iPad)。不要选中任何复选框,屏幕将类似于图2.3所示。
图2.3 为应用程序指定产品名、公司名和公司标识符以及开发平台
提示:
您可能想知道这些复选框都是做什么用的。Core Data是一种存储应用程序数据的高级方式,随着应用程序的增大,这些数据可能变得很重要。复选框Include Unit Tests和Include UI Tests指定自动编写测试,用于测试应用程序的功能。随着编写的应用程序越来越大,你可能对这些复选框感兴趣。
这些主题超出了本书的范围,要更深入地了解Core Data和测试工具,您可使用下一章将讨论的Xcode文档系统。
对设置满意后,单击Next按钮。Xcode将要求您指定项目的存储位置。切换到硬盘中合适的文件夹,确保没有选择复选框Source Control,再单击Create(创建)按钮。Xcode将创建一个名称与项目名相同的文件夹,并将所有相关联的模板文件都放到该文件夹中。
提示:
在项目文件夹中,有一个扩展名为.xcodeproj的文件。退出Xcode后,可通过打开该文件来返回到项目工作空间。
2.辨别方向
在Xcode中创建或打开项目后,将出现单个窗口,您将使用它来完成,从编写代码到设计应用程序界面在内的所有工作。如果这是您第一次接触Xcode,令人眼花缭乱的按钮、下拉列表和图标将让您感到恐惧。为让您对这些东西有大致认识,下面首先介绍该界面的主要功能区域,如图2.4所示。
图2.4 首次使用Xcode界面时很容易迷失方向
注意:
默认情况下,Debug和Utility部分被隐藏。要显示它们,可分别单击工具栏中倒数第二个按钮和最后一个按钮。在工具栏的最右端,有三个视图控制按钮,其中第一个用于隐藏/显示导航器。通过阅读本书,您将熟悉每个区域提供的功能。就现在而言,我们将重点放在导航器和编辑器上。
如果该界面的显示情况与您预期的完全不同,可使用Xcode菜单栏中的View菜单来显示工具栏、导航器或其他缺失的部分。
工具栏(Toolbar):显示项目状态,并让您能够轻松地使用常见的功能。
导航器(Navigator):管理文件、编组以及与项目相关的其他信息。
编辑器(Editor):编辑项目内容(代码、界面等)。
实用工具(Utility):让您能够快速访问对象检查器(inspector)、帮助和项目组成部分。
调试(Debug):如果执行期间代码出现了问题或者您生成了调试输出,将在这里显示这些内容。
3.在项目中导航
导航器可在众多不同的模式下运行——从导航项目文件到搜索结果和错误消息。要修改运行模式,可使用导航器上方的图标,其中的文件夹图标显示项目导航器,您在大多数情况下都将在这种模式下运行导航器。
项目导航器显示一个表示项目的顶级图标(它后面有项目名),这是项目编组。您可单击项目组左边的展开箭头将其展开,这将显示组成应用程序的文件和编组。下面来看看几分钟前创建的项目HelloXcode。
在Xcode的项目导航器中,展开项目导航器,您将看到与该应用程序相关联的3个文件夹,图2.5突出显示了它们。
图2.5 使用项目导航器浏览项目资源
注意:
您在Xcode中看到的文件夹是逻辑编组。在项目文件夹中并不能找到所有这些文件,也找不到相同的文件夹结构。Xcode布局设计用于帮助您轻松地查找文件,而并非文件系统结构的镜像。
在项目编组中有下面两个子组,它们可能很有用。
Project Code(项目代码):这个文件夹与项目同名,包含类文件的代码以及您加入到项目中的资源。正如您将在下一章学到的,类将互补的应用程序功能组合起来,您的大部分开发工作都将在类文件中进行。
Products(产品):Xcode生成的所有产品(通常是可执行的应用程序)都放在这里。
如果您进一步展开,将发现还有用文件夹图标标识的文件Assets.xcassets,这是一个素材目录,稍后将更深入地介绍。
提示:
如果要添加其他的逻辑文件编组,可使用菜单File>New>Group。如何组织项目由您决定。
利用过滤寻找目标
导航器底部有一个小型工具栏,您可使用它来过滤或调整当前显示的内容。例如,在项目导航器中,可在搜索文本框中输入文本,以便只显示匹配的项目资源(编组或文件)。您还可以使用该文本框左边的闹钟图标,以便只显示最近编辑过的文件。闹钟图标旁边的方框用于显示不受源代码控制的文件;有关源代码控制的更详细信息,请参阅本书的在线附录。
显示的过滤选项随上下文而异,即随导航器当前显示的内容而异。Xcode提供了大量的工具提示,当您遇到新区域和功能时,务必使用工具提示来探索它们。
4.在项目中新增代码文件
虽然Apple iOS应用程序模板提供了不错的开发起点,但您将发现需要在项目中添加其他类文件或界面文件,对高级项目来说尤其如此。要在项目中新增文件,首先选择要在其中添加文件的编组(通常是项目代码编组),再选择菜单File>New或单击导航器左下角的+按钮。Xcode将显示一个与New Project窗口相似的界面,要求您指定要在项目中添加的文件类别和类型,如图2.6所示。如果对示意图中显示的选项不熟悉,请不用担心,本书从头到尾都将提供相应的指南。
能否手工添加空文件?
您可以将现有文件拖放到Xcode编组文件夹中,从而将其复制到项目中。然而,就像项目模板让您能够节省实现时间一样,Xcode文件模板也如此。它们经常包含需要实现的各种功能的骨架。
图2.6 使用Xcode在项目中添加文件
5.在项目中添加资源
很多应用程序都需要声音或图像文件,您需要在开发过程中将其集成到项目中。显然,Xcode不能帮助您创建这些文件,因此您需要手工添加它们。为此,只需单击它们并将其拖放到Xcode的项目代码编组中。Xcode将询问您是否要复制文件,请务必选中指定要复制文件的复选框,让Xcode将文件放到项目文件夹的特定位置。
在文件夹Hour 02Projects中,有个Resources文件夹,其中包含文件Test.wav。将该文件拖放项目代码编组中,并指定必要时复制它,如图2.7所示。通过复制文件,可确保它们被正确地放到项目中,让您编写的代码能够访问它们。
提示:
如果您将一个包含多个文件的文件夹拖放到项目中,Xcode默认将自动创建一个包含所有这些文件的编组。
图2.7 将文件Test.wav拖放到项目代码文件夹中,并选择必要时复制它
6.删除文件和资源
如果您在项目中添加了不需要的东西,可轻松地将其删除。要将文件或资源从项目中删除,只需在项目导航器中选择它,再按Delete键即可。Xcode将询问您要删除项目中对该文件的所有引用并将文件移到回收站,还是只想删除对文件的引用,如图2.8所示。
图2.8 删除对文件的引用将保留文件本身
如果您选择只删除对文件的引用,文件本身将保留,但在项目中再也看不到它。
注意:
如果Xcode找不到它认为包含在项目中的文件,将在Xcode界面中用红色标出该文件。如果您在Finder中不小心删除了项目文件夹中的文件,便可能出现这种情况;另外,如果Xcode知道项目将创建某个应用程序文件,但应用程序还未创建它,也将出现这种情况。在后一种情况下,可忽略Products编组中以红色显示的.app文件,而不会有任何问题。
7.使用Xcode素材目录
从Xcode 5起,在管理要在项目中包含的文件方面,Apple提供了一种更好的新方法:素材目录(asset catalog)。素材目录提供了一个中央地点,用于存储和管理项目的所有数据文件;它主要用于存储图像,但也可存储其他数据。
相比于将图像文件夹拖入Xcode,素材目录有两个优点。首先,它提供了清晰的界面,可用于指定Retina图像、非Retina图像和随设备而异的图像;其次,可对素材目录中的图像“切割(sliced)”,这是Apple使用的一个术语,指的是指定图像的一些区域,这些区域在图像放大时将被重复。第7章将使用这项功能。
注意:
素材目录不仅给开发人员提供了帮助,还让Apple能够只提供设备所需的图像:不再在iPhone应用程序中存储iPad图像,反之亦然。这种功能是iOS 9为缩小应用程序的规模而引入的。
(1)新增素材目录
在Xcode中新建的每个项目都包含一个默认素材目录,名为Assets.xcassets。如果您打开的是旧项目,或者需要创建多个素材目录,可新增素材目录。为此,可选择菜单File>New>File,再在New File对话框中依次选择Resource和Asset Catalog,如图2.9所示。
![image](https://yqfile.alicdn.com/090bd508d7e00c1ea3af40e80310d8350c2d566f.png" >