资讯详情

蓝鸥Swift干货分享

2017-04-14 阅读:73 来源:北京蓝鸥ios电脑培训学校
进入>

Swift以其新面目闪亮登场,北京iOS培训,蓝鸥3G学院和您一起解析苹果新语言:

Swift是一门集C语言、Objective-C语言优势于一身的全新编程语言,是由苹果开发的专门针对iOS以及OSX平台的程序设计语言,并且完全兼容C语言。Swift采用更安全的编程模式,并且添加了一些流行的特性,这让编程变得更加简单,更加灵活,更有乐趣。Swift以其全新的面貌展示给众人,借助于成熟的、非常受欢迎的Cocoa以及CocoaTouch框架为重新定义软件开发方式创造了有利条件。

Swift已经酝酿多年,苹果通过改进现有的编译器、调试器、以及基础框架为Swift建立了坚实的基矗我们通过自动引用计数技术(ARC)进一步简化了内存管理的方式。建立在Foundation框架以及Cocoa框架等坚实的基础上的框架,Swift已经具备现代化和标准化的特征。Objective-C已经演化到支持块语句(block)、集合字面量、模块以及通过使用框架来与现代化语言技术实现无缝对接。感谢这些基础工作,我们现在可以正式介绍苹果未来软件开发的全新语言-Swift。

Swift对于使用Objective-C作为开发语言的开发人员来说可谓似曾相识,十分亲切。因为它采用Objective-C见名知意的参数命名规则以及强大的Objective-C动态对象模型。它可以与现有的Cocoa框架无缝对接,并且可以与Objective-C实现代码混编。建立在这些共同点上,Swift还引入了许多新特性、代码混编并且是完全面向对象的语言。

Swift对于开发者来说是友好的。它是第一款像脚本语言一样灵活、有趣的企业级系统编程语言。它支持playgrounds模式,一个无需通过编译和运行程序就能允许开发者一边写Swift代码一边立即查看代码的执行结果的创造性尝试。

Swift结合了现代开发语言的各种优势,这源自于苹果的优良的开发文化。其编译器为性能而生,而其语言为开发而生,缺一不可。这一切使得Swift成为开发者乃至苹果最有价值的投资。

编写iOS和OSX应用,Swift是一个非常棒的方式,未来会持续引入新特性和新功能。对于Swift,我们拥有雄心壮志,真是迫不及待的想要看到您如何用它来创造奇迹。

Swift概览

依照传统,第一次使用新的语言做开发,应当在屏幕上打印出来“Hello,world”。用Swift,只需要简单的写下如下语句:

println("Hello,world")

如果你已经写过C语言或者Objective-C代码,Swift这种语法规则你一定会觉得很面熟,并且这已经是一个完整的程序了。你无需引入单独的类库来完成输入/输入或者字符串操作功能。代码书写在一个程序的全局入口,所以你不再需要main函数。最最重要的是你也不必在每行语句结束时写上恼人的分号。

本章节将提供足够的信息帮助你如何使用Swift语言完成多种不同的编程工作。还不理解?不必担心,概览中提到的知识点将在本书随后的内容中会详细讲解。

注:

为了得到更好的体验,请在XCode中创建playground项目,Playgrounds可以编写Swift代码,同时立即查看代码的执行结果

简单值

使用let关键字声明常量,使用var关键字声明变量。虽然编译时不必知道常量的值,但是至少得为声明的常量赋值一次。这意味着声明一个常量,可以多次使用该常量对应的值。

varmyVariable=42

myVariable=50

letmyConstant=42

常量或者变量应当与你所赋的值类型相同。通常,不用书写确切的类型。只需要为一个常量或者变量赋值,让编译器去推断它们的类型吧。在上述的例子中,编译器会推断出myVariable变量是一个整型integer因为其初值就是整型的。

如果初值没有足够的信息用于推断其类型(或者根本没有初值)可以通过在常量或者变量名后添加冒号和类型名来指定其类型。

letimplicitInteger=70

letimplicitDouble=70.0

letexplicitDouble:Double=70

实验:

声明一个常量赋初值为4,并且指明其类型为Float型

在Swift中不能隐式转换一个值的类型,如果需要将某个值转换成不同类型,需要创建代转类型的实例。

letlabel="Thewidthis"

letwidth=94

letwidthLabel=label+String(width)

实验:

尝试移除最后一行字符串转换函数,看到了什么错误?

其实有更简单的方式将一些基本数据包含到字符串中,那就是将数据写在小括号中,然后在小括号前加一个反斜杠就可以了。例如:

letapples=3

letoranges=5

letappleSummary="Ihave\(apples)apples."

letfruitSummary="Ihave\(apples+oranges)piecesoffruit."

实验:

使用\()将一个浮点型数值加入到一个包含某人姓名的字符串中

用中括号([])来声明数组和字典,然后通过在[]中写上数组的下标或者字典中的键来访问数据元素。

varshoppingList=["catfish","water","tulips","bluepaint"]

shoppingList[1]="bottleofwater"

varoccupations=[

"Malcolm":"Captain",

"Kaylee":"Mechanic",

]

occupations["Jayne"]="PublicRelations"

如果要创建空的数组或者字典,可以使用初始化语法。

letemptyArray=String[]()

letemptyDictionary=Dictionary()

如果类型可以被编译器推断出来,那么你可以直接用[]创建空数组,[:]来创建字典—例如,当你为一个变量赋一个新值,或者为一个函数传参数是,你可以这样做:

shoppingList=[]//Wentshoppingandboughteverything.

控制流程

使用if和switch做条件判断,使用for-in,for,while和do-while来执行循环。值得注意的是,判断条件或者循环变量旁的小括号不是必写的。但是大括号依然要写。

letindividualScores=[75,43,103,87,12]

varteamScore=0

forscoreinindividualScores{

ifscore>50{

teamScore+=3

}else{

teamScore+=1

}

}

teamScore

在if语句中,判断条件必须是布尔表达式(Boolean)—这样的话,ifscore{…}这句就是有错误的,因为score并不是隐式的跟0做比较。

在当某些值可能为空的时候,你可以同时使用if和let,这样这些值就表示为可选的。一个可选的值既可以包含某个确定的值也可以为nil,nil表示一个空值。当然在类型后加一个问号(?)就可以将该值标记为可选的。

varoptionalString:String?="Hello"

optionalString==nil

varoptionalName:String?="JohnAppleseed"

vargreeting="Hello!"

ifletname=optionalName{

greeting="Hello,\(name)"

}

实验:

将optionalName赋值为nil,greeting的结果会是什么呢?当optionalName为nil是添加一个else语句来设置一个不同的greeting

如果可选值为nil,那么if语句的判断条件就是false,大括号中的代码也会被跳过。否则,可选值就会执行相关的代码块并把结果赋值给let后面对应的常量,这样大括号所表示的代码块的值就会可用。

不同于C语言或者Objective-C,switch语句在Swift语言中支持任意数据类型和各种各样的比较操作—并局限于整型和等式比较。

letvegetable="redpepper"

switchvegetable{

case"celery":

letvegetableComment="Addsomeraisinsandmakeantsonalog."

case"cucumber","watercress":

letvegetableComment="Thatwouldmakeagoodteasandwich."

caseletxwherex.hasSuffix("pepper"):

letvegetableComment="Isitaspicy\(x)?"

default:

letvegetableComment="Everythingtastesgoodinsoup."

}

实验:

尝试移除defaultcase,你看到了什么错误?

当符合条件的case被执行后,程序将会跳出switch语句。程序并不会顺序执行接下来的case,所以在switch语句中就没有必要显式的通过在每个case对应的代码片段结尾使用关键字break来跳出该语句。

同时,你可以通过两个变量来表示字典的每一个键值对再配合使用for-in来快速遍历字典。

letinterestingNumbers=[

"Prime":[2,3,5,7,11,13],

"Fibonacci":[1,1,2,3,5,8],

"Square":[1,4,9,16,25],

]

varlargest=0

for(kind,numbers)ininterestingNumbers{

fornumberinnumbers{

ifnumber>largest{

largest=number

}

largest

实验:

通过添加一个新的变量来记录遍历得到的数中的最大数

while语句依然继承自C语言,除非条件发生改变,否则会循环执行某段代码。同时循环的条件也可以写在最后面,这样可以确保循环至少会被执行一次—do-while。

varn=2

whilen<100{

n=n*2

}

n

varm=2

do{

m=m*2

whilem<100

m

在for循环中,你可以使用..来描述循环变量的取值范围,或者依然使用C语言中声明变量,条件和自增运算的方式,这两者是等价的。

varfirstForLoop=0

foriin0..3{

firstForLoop+=i

}

firstForLoop

varsecondForLoop=0

forvari=0;i<3;++i{

secondForLoop+=1

}

secondForLoop

如果是使用..的话,取值范围不包括上限(类似于i<5),若要包括则需要使用…(i<=5).

全部内容请关注蓝鸥iOS培训:lanou3g/lo_news/

加载全文

免责声明:本站部分内容、图片来自用户自主上传,如果您对本站信息资源版权的归属问题存有异议,请您致信,我们会立即做出答复并及时解决。如果您认为本站有侵犯您权益的行为,请通知我们,我们一定根据实际情况及时处理。

以上是北京蓝鸥ios电脑培训学校为大家整理的有关蓝鸥Swift干货分享的全部内容,更多精彩请访问学习资讯新闻专栏。
上一篇: iOS开发培训如何?

相关课程

更多>
2020猎学网广告栏
申请课程免费试听名额

课程顾问24小时内联系您

你好

顾问将于24小时内联系您!

确定
在线咨询 微信咨询 立即报名
申请1对1课程顾问咨询服务
×
你好

顾问将于24小时内联系您!

确定
北京猎学网 >北京蓝鸥ios电脑培训学校 >蓝鸥Swift干货分享