一、什么是Swift?
1.Swift 是一种新的编程语言,用于编写 iOS 和 OS X 应用。
2.Swift 结合了 C 和 Objective-C 的优点并且不受 C 兼容性的限制。
3.Swift 采用安全的编程模式并添加了很多新特性,这将使编程更简单,更灵活,也更有趣。
4.Swift 是基于成熟而且倍受喜爱的 Cocoa 和 Cocoa Touch 框架,它的降临将重新定义软件开发。
5.Swift 是编写 iOS 和 OS X 应用的极佳手段,并将伴随着新的特性和功能持续演进。
xcode6.1支持Swift编程 ,他有一个特点就是可以用playground,playground是Xcode的新的调试程序的一个工具,它提供灵活的数据展示方式,弥补了我们之前调试程序的手段的不足之处,它支持QuickLook多样式调试显示,不用添加测试代码、也不用按Run执行程序,就可以直观地查看如,Color类型、String类型、Image类型、View类型、数据等等,可以自已开发动态展示的代码(实现接口),使用XCPCaptureValue函数观察动态过程。
playground好于在于能一边写代码一边看到输出的常量变量的值。不需要运行模拟器。
我们来试一下该工具的用法。
打开xcode6开发工具,选择Get started with a playground.
这个功能可以边输入代码,一边看到常量或变量的值。
保存为SwiftPlayground.playground,点击create进入编辑器。
使用playground学习swift语法是最好不过的了。
//输出语句
println("hello,world")
//常量与变量:Swift使用 var声明变量,let 声明常量。
var a ="我市变量"
let b ="我是常量"
//Swift 支持类型推导(Type Inference),所以上面的代码不需指定类型,如果需要指定类型
let integer :int_fast32_t =70;
let double:Double =70.0
let string:String ="hello,Swift"
//Swift 不支持隐式类型转换(Implicitly casting),式类型转换(Explicitly casting):
let label ="The width is "
let width =94
let width =label +String(width)
//转换字符串:Swift使用\(item)的形式进行字符串格式化:
let myString ="hello"
let MyInt =90
let myString2 ="myInt is \(MyInt)"
let myString3 =myString +String(MyInt)
//Swift 使用[]操作符声明数组(array)和字典(dictionary):
var array = ["one","two","three","five"]
var getTwo =array[1]
var dict = ["oneName":"i am one value","twoName":"i am two value"]
var getTwoValue =dict["twoName"]
dict["threeName"] ="hello"
println("array =\(dict)")
//一般使用初始化器(initializer)语法创建空数组和空字典,如果类型信息已知,则可以使用[]声明空数组,使用[:]声明空字典。
let emptyDict =Dictionary<String,Float>()
Swift的条件语句包含if和switch,循环语句包含for-in、for、while和do-while,循环/判断条件不需要括号,但循环/判断体(body)必需括号:
//for语句遍历数组
let individualScores = [75,43,103,87,12]
var teamScore =0
for scoreinindividualScores
{
if score >50
{
teamScore +=3
}
else
{
teamScore +=1
}
}
println("teamScore = \(teamScore)")
//for-in 遍历字典
let dict = [
"first":[2,3,4,5,6],
"second":[1,2,3,4,3,2],
"three":[2,4,6,8,10],
]
var largest =0
for(kind,numbers)indict
{
for number in numbers
{
if(number > largest)
{
largest = number
}
}
}
结合if 和let,可以方便的处理可空变量(nullable variable)。对于空值,需要在类型声明后添加?显式标明该类型可空。
//可空类型:对于空值,需要在类型声明后添加?显式表明该类型可空
var optionalString:string ?="hello"
optionalString == nil
var optionalNmae:String ?="john"
var greeting ="hello"
iflet name =optionalNmae
{
greeting ="hello +\(name)"
println("teamScore =\(teamScore)")
println("teamScore")
}
//枚举
enum Week
{
case星期一
case星期二
case星期三
case星期四
case星期五
case星期六
case星期天
}
//switch语句
let vegetable ="星期一"
switchvegetable {
case"星期二":
let vegetableComment ="要上班了,伐开心."
case"星期三","星期四":
let vegetableComment ="继续上班中,低气压"
caselet x where x.hasSuffix("一")
let vegetableComment ="可恶的星期一"
default:
let vegetableComment ="今天星期几"
println("vegetableComment =\(vegetable)")
}
//while 和 do - while循环
var n = 2
while n <100
{
n = n*2
}
var m =12
do {
m =m*2
} while m <100
//Swift 支持传统的 for循环,此外也可以通过结合... (生成一个区间)和 for-in实现同样的逻辑。Swift 除了...还有...:..生成前闭后开的区间,而...生成前闭后闭的区间。
var firstForLoop =0
for iin0...3{
firstForLoop += i
}
var secondForLoop =0
forvar i =0;i<3;++i{
secondForLoop += i
}