swift入门语法&&基础教程

前端之家收集整理的这篇文章主要介绍了swift入门语法&&基础教程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Swift基础


@H_502_13@1@H_502_13@,常量和变量

变量@H_502_13@ 可以修改

常量@H_502_13@ 定以后不可以修改

提示@H_502_13@:在@H_502_13@swift开发中@H_502_13@,通常先定义常量@H_502_13@,只有必须要修改的时候@H_502_13@,再改成@H_502_13@var,因为@H_502_13@let本身不允许被修改@H_502_13@,因此更安全


var x =10

x =15


let y =10

//y = 15 报错


//[[UIView alloc] initWithXXX:xxx]

@H_502_13@//所有@H_502_13@OC中以上的实例化方法@H_502_13@,在@H_502_13@swift中都可以使用类名@H_502_13@(XXX:)

@H_502_13@//实例化一个@H_502_13@View对象@H_502_13@,保存在堆中

let view = UIView(frame: CGRectMake(0,100,100))


//[UIcolor redColor]swift,通常用类名.方法名可以找到对应函数

view.backgroundColor = UIColor.redColor()


注意事项@H_502_13@:swift时一个对类型是一个对类型要求很严格的语言

任何类型之间@H_502_13@,都不可以进行隐式转换

整数的格式 Int(long64位的)

小数的格式 Double (OC默认小数的格式是 CGFloat)

关于数据类型的推导@H_502_13@,在给变量设置初始值的时候@H_502_13@,根据@H_502_13@"右边@H_502_13@"来判断的@H_502_13@,在真正初始化的时候@H_502_13@,才决定变量的准确类型


let i =10

let j =10.5


下面两种都可以实现@H_502_13@i和@H_502_13@j的相加

let k1 = Double(i) + j//把前面转成小数

let k2 = i + Int(j)//把后面转成整数


@H_502_13@//在定义变量的时候也可以直接指定变量的类型

let z:Double =8


@H_502_13@2@H_502_13@,分支逻辑

/**

@H_502_13@* if 在@H_502_13@C语言中有一个提点@H_502_13@:非零即真

swift中没有非零即真的概念,只有true/false

@H_502_13@ 在编写分支语句的时候@H_502_13@,必须准确指定条件的真假

*/


let m =10

/**

@H_502_13@* 1.条件不需要括号

2.必须要有{}

@H_502_13@ 使用@H_502_13@swift开发@H_502_13@,要写出优雅的代码@H_502_13@,非常有挑战

*/

if m >5{

print("hello")

}


实际应用

convernience init?()表示这个方法未必能真正实例化出一个对象

在@H_502_13@OC开发中@H_502_13@,由于语法要求不严格@H_502_13@,程序员不需要考虑这些问题@H_502_13@,在崩溃的时候才考虑

在@H_502_13@swift中@H_502_13@,要求在写代码的时候@H_502_13@,就必须考虑这些问题@H_502_13@,能够尽早些发现错误


let url = NSURL(string: "http://www.baidu.com/s?word=zhongguo")//string中有中文的时候 url为空


if url !=nil {

//NSURLRequest(URL: url),url必须要有值

let request = NSURLRequest(URL: url!)

}


但是@H_502_13@,如果判断条件很多@H_502_13@,会让代码很难看

@H_502_13@swift提供了一个解决方案@H_502_13@:使用@H_502_13@if同时设置数值

if let url = NSURL (string:"www.baidu.coms/s?word=") {

@H_502_13@ @H_502_13@//代码执行到此@H_502_13@,url就一定有值@H_502_13@,所以不需要在使用@H_502_13@ "!"

let request = NSURLRequest(URL: url)

}


实际的应用技巧

?表示 可以有值(NSString),也可以没有值(nil)

@H_502_13@? 如果对象为空@H_502_13@,就不会调用后面的方法@H_502_13@,感觉上和@H_502_13@ OC中给@H_502_13@nil发送消息类似

@H_502_13@本质上不一样@H_502_13@.如果对象是空@H_502_13@,就不调用后面的放法

@H_502_13@可以借助@H_502_13@xcode智能提示确定使用@H_502_13@ !还是@H_502_13@ ?

var string:NSString?

string ="hello"


打印可选项的时候@H_502_13@,输出一个@H_502_13@Optional,提示开发者是一个可选项

print(string?.length)

使用@H_502_13@!的时候@H_502_13@,要求@H_502_13@string必须要有值@H_502_13@,否则崩溃@H_502_13@(不输出@H_502_13@)

print(string!.length)


目前的代码存在什么风险@H_502_13@,如果@H_502_13@string没有初始值@H_502_13@,会直接崩溃

苹果把判断对象是否有值交给了开发工程师

let len =10 + string!.length


强烈推荐@H_502_13@: ??用来快速判断对象是否为@H_502_13@nil

本人感觉一般@H_502_13@ ?? 和@H_502_13@ ?连用@H_502_13@,而非@H_502_13@ !

let len2 =10 + (string?.length ?? 0) //有值时输出,没有值时输出10


@H_502_13@*****: ?? 的应用场景最多为@H_502_13@: tableView的数据源方法@H_502_13@,有没有数据都不会报错

var array:[String]?

@H_502_13@//追加一项内容

array = ["zhangsan","lisi"]

print(array?.count ??0)


3,循环

传统的写法@H_502_13@,和@H_502_13@OC几乎一样

注意:使用var,而不是let

for var i =0;i < 10;i++ {

print(i)

}


更加方便的写法@H_502_13@:

@H_502_13@in指定范围

早期的swift".."后来改成了"..<"

for iin 0..<10 {

//输出0~9

print(i)

}


for iin 0...10 {

//输出0~10

print(i)

}


@H_502_13@//如果遍历的时候@H_502_13@,对索引下表不关注@H_502_13@,可使用@H_502_13@"_"

for _in 0...5 {

print("hello")

}

猜你在找的Swift相关文章