《Swift iOS应用开发实战》——1.2 了解Playground

1.2 了解Playground

本书使用Xcode 6 beta 4作为开发工具,与之前发布的beta 1版本相比,beta 4对Swift语言做了大幅度改进。开发者可以使用Swift来编写更好、更安全的应用程序,而且新版本的Swift也修正了许多开发者提出的请求,尤其是对数组进行了重新设计。但是,beta版本毕竟不同于正式版,依然存在着许多Bug,只不过对Swift初学者来说影响不大。
启动Xcode 6,就会看到一个欢迎界面,如图1-3所示。欢迎界面分为左右两部分,左侧有三个选项,分别是直接启动playground、创建一个新的Xcode项目和从仓库导出一个项目。右侧则是一个最近编辑的项目列表,如果项目没有出现在列表中,可以点击底部的“Open another project”链接进行选择。接下来,我们在欢迎界面中点击“Get started with a playground”链接,启动Playground。

1.2.1 Playground的编辑器模式
Playground是什么呢?它是Xcode 6中新引入的一种文档类型,在该文档类型的文件中封装了一些有用的东西,其中包括全部的Swift代码。Swift代码会在Playground环境中实时运行,并且只要我们在Playground中编辑Swift代码,就会马上自动显示结果。Swift文档也能包含一个文件夹,里面可以内嵌那些供代码使用的资源。另外,我们还可以在Playground文件中引用那些外部的、存储在系统中的可利用资源。最后,Playground还可以包含一个时间轴(Timeline),时间轴可以在边栏中通过可视化方式显示结果,这个特性对开发者来说非常实用。下面分步讲解如何创建一个文件。
步骤1在Xcode的欢迎界面中点击“Get started with a playground”,在弹出的文件选项面板中设置Name为“HelloWorld”,设置Platform为“iOS”,如图1-4所示。

步骤2 确定好文件的保存位置以后,会自动打开Playground编辑器,其中左侧是Swift代码,而在右侧的边栏中会显示运行的结果。将之前的Swift代码修改成下面这样:

// Playground - noun: a place where people can play
import UIKit
var string = "hello" + " " + "world"

for i in 0..<10 {
    string += "\(i)"
}
string

for i in 0..<20 {
    var j = i % 4
}

在上述代码中,首先定义了变量string,然后通过加号将3个字符串连接并赋值给它。变量string是String类型,当我们声明常量或变量的时候,通过加上类型标注来说明常量或变量中要存储的值的类型。方法是在常量或变量名后面加上一个冒号和空格,再加上类型名称。之前的声明语句也可以写成下面这样:

var string: String = "hello" + " " + "world"

一般来说,我们很少需要写类型标注。如果在声明常量或者变量的时候赋了一个初始值,Swift可以推断出这个常量或者变量的类型。在上面的例子中,因为为String赋了初始值,所以编译器推断其类型为String。
接下来在两段循环代码中使用了半闭区间运算符(a..细心的读者会发现,Playground会在我们编写代码的过程中,让Swift代码从头到尾地反复运行,并且将更新的结果实时显示在边栏之中。这是Playground最基本的编辑器模式。
使用Swift编写的代码适用于全局范围,同时也是整个程序的执行入口,不像C或Objective-C那样需要main()函数作为执行程序的起点,并且程序代码也不需要像它们那样用分号(;)作为结尾。
1.2.2 时间轴简介
除了编辑器模式以外,还可以将Playground设置为助手编辑器模式。在该模式下,开发者可以调出时间轴(Timeline),并通过时间轴以可视化的方式了解运行结果的更多细节信息。
步骤1 在默认情况下,Playground的工具栏是隐藏的,在菜单中选择“View→Show Toolbar”,然后点击工具栏右侧的“Show the Assistant editor”,如图1-5所示。

步骤2 观察“var j = i% 4”代码行右边栏中的信息,“(20 times)”代表该循环体一共执行了20次。而这20次的结果是什么呢?点击该行右边栏中的“Value History”按钮后,会出现与代码行对应的项目图表,如图1-6所示。在项目图表中所呈现的点代表每次该代码行被循环执行时所产生的值。此时的“Value History”按钮变成了,表明它的项目已经出现在时间轴中。
Playground会根据不同类型的值显示不同类型的项目。如果是数值则会显示一个图表,在图表中的x轴表示执行的时间,y轴记录代码行中的值,点击图表中的某个点,就会显示在该时间点的值。

除了数字类型,在时间轴中还可以显示字符串(string)、颜色(color)和图像(image)类型。当我们使用println()函数的时候,在时间轴上还会显示控制台输出项目。
当时间轴中有太多的Value History项目,想要收起(不是关闭)某个临时不用的项目时,点击该项目顶端的表达式即可。
步骤3 在当前Swift代码的结尾处添加下面的代码:

let color = UIColor.blueColor()

let attribStr = NSAttributedString(string: string, attributes:
                [NSForegroundColorAttributeName:color,
                NSFontAttributeName:UIFont.systemFontOfSize(32)])

输入这几行代码以后,在结果边栏中会显示color的颜色和attribStr的值。你可以点击“Quick Look”按钮观看字符串的实际显示效果,也可以点击“Value History”按钮在时间轴中查看结果,如图1-7所示。

接下来,我们要在Playground中添加一些图片资源,然后使用Swift语句将其载入,并在时间轴上面查看结果。
步骤4 在菜单中选择“View→Utilities→Show File Inspector”调出文件检查器(Option+ Command+1快捷键),在“Resource Path”部分中,点击其中的按钮打开项目的资源文件夹,如图1-8所示,将素材文件夹中的1-1.png、1-2.png和1-3.png这3个图像文件拖曳到其中。

步骤5 在Playground中添加下面的代码:

let imageNames = ["1-1", "1-2", "1-3"]
let images = imageNames.map{ UIImage(named: $0)}
images
let image = images[0];
let imageView = UIImageView(frame: CGRectMake(0, 0, 512, 512))
imageView.image = image

上述代码首先定义了一个字符串数组imageNames,数组中的字符串对象都是刚刚保存在Resources文件夹中的文件名(不带扩展名)。然后,通过数组的map方法依次遍历其中的所有元素(字符串对象),再通过这些字符串获取资源文件夹中的所有图像,最后将这些图像以数组的形式赋值给images。
截止到目前,我们只能在边栏中看到map方法运行了4次,并不能判断是否成功载入了图像,所以接下来加入了一行images代码。此时,在边栏中会看到包含3个图像信息的数组,每个图像都是512×512像素,并且点击“Quick Look”按钮还可以看到它们,如图1-9所示。另外,也可以通过“Value History”按钮将它们显示在时间轴上。

在后面的代码中我们又创建了一个UIImageView对象,并将images数组中的第一个对象赋值给imageView的image属性。此时,点击“let imageView”行的“Quick Look”,可以发现它是一个空白的UIImageView对象。但点击“imageView.image”行的“Quick Look”,则会发现UIImageView对象已经载入了图像。
在Playground中可以随时更新Resources中的资源,如更改现有的图像文件,添加音视频文件等。只要在更新完成后选择菜单中的“Editor→Execute Playground”即可。
除了在Playground项目中添资源以外,我们还可以利用资源的绝对路径来载入图像。
步骤6 将素材文件夹中的1-1.png文件复制到用户的图片文件夹中。在Playground中添加下面的代码:

imageView.image = image
let absoluteImagePath = "/Users/liuming/Pictures/1-1.png"
let image2 = UIImage(contentsOfFile: absoluteImagePath)

在“Quick Look”中同样可以看到absoluteImagePath路径所定位的图像。absolute-ImagePath指定了一条绝对路径,其中的“/Users/liuming/”部分需要修改为你所指定的路径。
1.2.3 Quick Look所支持的类型
利用Quick Look特性,我们可以在Playground中快速查看欲了解的值的信息。那么Quick Look都支持哪些类型呢?它包括下面这些:
颜色—UIColor类型的对象
字符串—包括无格式(String)和带属性的(NSAttributedString)
图像—UIImage
视图—各种视图对象,例如UISlider、UIButton、UILabel等
Array和Dictionary—列表显示数组和字典对象
Points、rects和sizes—点、矩形和大小的信息
贝赛尔曲线—显示所绘制的曲线
URLs—虽然URL是一个链接地址,但通过Quick Look可以查看该链接的实际内容
Classes和Struct—类和结构,在Quick Look中会显示类和结构的属性信息。
1.2.4 为什么要用Playground
在了解了Playground的基本功能以后,大家可能会有这样一个疑问:这玩意到底有什么用?用它来开发一个项目那简直就是“扯淡”。它只能编写一些小打小闹的东西呀!
苹果发布Swift这门全新的语言是需要巨大勇气的,毕竟让上百万开发者从使用了20多年的Objective-C迁移到Swift,就像下了一个天大的赌注。弄不好赔钱是小事(苹果不缺钱),丢了面子可就是大事了。因此,苹果在Xcode开发工具中独立出Playground链接,就是为了让程序员能够快速掌握Swift,这里面包括:
通过Playground学习Swift。
苹果在iBooks Store中推出了《The Swift Programming Language》一书,大家可以在Playground中边看书边学习。
方便初学者学习程序设计语言,让他们真正地去关注代码本身,只要在Playground编辑器中编写代码,就可以立即得到结果,从而省去了学习项目的配置、调试、构建和在模拟器或真机上运行的麻烦。
1.2.5 Playground的一些限制
虽然Playground是初学者学习Swift的理想工具,但是它也有一些限制。最主要的一个限制就是它不能用于性能测试。Playground主要用在编写代码的过程中实时显示运行结果,它执行速度的快慢完全取决于所编写代码的行数,行数越多执行所花费的时间也就越多。除此以外,Playground也不能实现下面的这些功能:
用户的交互—Playground可以实时得到运行结果,但是不能有交互的操作。
授权—Playground不支持任何形式的授权。
基于设备的执行—当开发iOS应用的时候,不能将Playground项目安装到iOS设备上执行。
自定义的框架—在Playground中我们只能使用iOS SDK所提供的基本框架库,无法使用自己开发的框架。如果非要使用,则需要将该框架复制到Playground项目的资源文件夹中。

时间: 2024-10-27 00:36:30

《Swift iOS应用开发实战》——1.2 了解Playground的相关文章

《Swift iOS应用开发实战》——3.1MVC设计模式简介

3.1MVC设计模式简介 要想成为一名优秀的iOS程序开发人员,至少要具备一种面向对象程序设计语言的开发经验,比如Java.C++或C#,并且C语言也是我们必须熟练掌握的,在此基础上学习Swift语言就会游刃有余.除此以外,我们还要对设计模式有一定的了解.在iOS中最重要的,也是使用最多的一种设计模式就是:模型-视图-控制器(Model-View-Controller,MVC)设计模式. 在开发面向对象应用程序之前(甚至是面向对象程序开发成为主流后的一段时间),程序员们在编写程序代码时还总是愿意

《Swift iOS应用开发实战》——第2章 搭建计算器的界面

第2章 搭建计算器的界面 作为一名开发者,有的时候你可能会听到身边的人在指着手机不停抱怨:"如果有这样一款应用该多好--"是呀,当一个不经意的想法被你变成现实的时候,你所得到的不仅仅是经济方面的利益,更多的是那种经历,那种从无到有,从幼稚到成熟的过程,而经历和过程无比珍贵.通过本书的学习,你将学会如何创建基于iOS平台的应用程序,并且通过对程序的改进,你完全有可能开发出一款在App Store上有百万用户下载的应用,但"千里之行始于足下",让我们一起先从本书的第一个

《Swift iOS应用开发实战》——第1章 Swift简介

第1章 Swift简介 北京时间2014年6月3日凌晨1点,苹果公司(以下简称苹果)在美国旧金山Moscone中心举行了WWDC开发者大会开幕式,会上正式发布了iOS 8移动操作系统以及OS X Yosemite桌面操作系统.抛开Yosemite不谈,苹果在iOS 8中更新了很多内容,其中包括: 锁屏状态下直接快速删除通知. 支持发送语音信息. 输入法支持预判联想功能. 新增Healthkit健康应用. Siri支持流媒体识别,可以直接通过它购买音乐. 自带相册集成更强大的图片处理软件. 大幅改

《Swift iOS应用开发实战》——1.3 了解Xcode

1.3 了解Xcode 作为一名开发者,不管在什么平台上进行开发,总需要一大堆的软件支持,才能将自己的想法变成可以让成千上万人受益的应用程序.苹果不希望这样,它为开发者提供了一个优雅的.功能强大的.光鲜亮丽的开发工具包,这个包就叫做Xcode.通过Xcode,我们可以创建.测试.部署和发布iOS或OS X应用程序.在2014年6月,苹果发布了iOS 8和Xcode 6的beta版本,在使用的过程中笔者能够感受到苹果力求让开发工具无比简单.实用.通过其强大的功能和全新技术,帮助开发者在创建应用程序

《Swift iOS应用开发实战》——导读

前言 苹果公司在2014年6月的WWDC(Worldwide Developers Conference,苹果全球开发者大会)上向公众展现了全新的iOS 8移动操作系统和Yosemite桌面操作系统.作为开发者,大会开幕之前的任何爆料,我都是不会错过的.在大会开幕的前一天,我得知本届大会的宣传标语为:编写代码改变世界(Write the Code. Change the World).历届WWDC的宣传标语都是以全新.卓越.领先.创新.引领等作为关键词,而这次却使用了非常接地气的"编写代码&qu

《Swift iOS应用开发实战》——1.1初识Swift

1.1初识Swift Swift是苹果在WWDC 2014所发布的一门编程语言,用于开发iOS和OS X应用程序. 2010年7月LLVM编译器的原作者暨苹果开发工具部门总监克里斯·拉特纳(Chris Lattner,就是在WWDC 2014大会上亲自演示Swift代码的那位仁兄)开始着手开发Swift语言,一直到2014年6月发布,Swift大约经历了4年的开发期.在WWDC 2014大会中,苹果宣称Swift的特点是:快速.现代.安全和具有交互性. Swift的处理速度非常快.在WWDC上,

《Swift iOS应用开发实战》——1.4  使用代码编辑器

1.4 使用代码编辑器 回到刚刚创建的HelloWorld项目,此时在项目导航中可以看到以下3个文件:AppDelegate.swift.ViewController.swift.Main.storyboard故事板文件.当然还有一些其他文件存在于项目之中(比如Images.xcassets文件夹),我们暂时先不去管它们. 步骤1 在项目导航中选择顶部的HelloWorld条目(蓝色图标的),在编辑区中选择"General"标签,然后在下面的Deployment Info部分的&quo

《Swift iOS应用开发实战》——2.1为移动平台开发应用

2.1为移动平台开发应用 如果之前根本没有为Cocoa或它的前身NeXTSTEP开发过应用程序,你可能会感觉到在最初使用Cocoa Touch(iOS的应用程序框架)开发iOS应用程序时,之前所学的所有程序语言(比如Java..NET)在这里都派不上用场,时常处于一头雾水的混沌状态.这是初学者在学习时的正常状态,你根本不用害怕这种状态,只要坚持下去就会慢慢适应.本书假定你已经具有面向对象的开发经验,以及初步掌握了Swift语言的相关知识,这些经验和知识对于编写iOS应用程序是非常重要的.在为移动

《Swift iOS应用开发实战》——2.5与代码进行关联

2.5与代码进行关联 通过前面的学习,我们已经知道如何在故事板中创建用户界面,但在搭建好用户界面以后又要做什么呢?接下来就需要将控件对象和程序代码关联起来.我们在创建Calculator项目的时候使用了默认的Single View Controller模板,该模板关联了故事板中的View Controller场景和ViewController.swift文件中的ViewController类.现在我们在故事板中查验一下.在故事板中选中View Controller场景,使用Command+Opt