swift入门语法&&基础教程

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


1,常量和变量

变量 可以修改

常量 定以后不可以修改

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


@H_403_0@var x =10

@H_403_0@x =15


@H_403_0@let y =10

@H_403_0@//y = 15 报错


@H_403_0@//[[UIView alloc] initWithXXX:xxx]

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

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

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


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

@H_403_0@view.backgroundColor = UIColor.redColor()


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

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

@H_403_0@整数的格式 Int(long64位的)

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

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


@H_403_0@let i =10

@H_403_0@let j =10.5


下面两种都可以实现ij的相加

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

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


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

@H_403_0@let z:Double =8


2,分支逻辑

@H_403_0@/**

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

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

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

@H_403_0@*/


@H_403_0@let m =10

@H_403_0@/**

* 1.条件不需要括号

@H_403_0@ 2.必须要有{}

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

@H_403_0@*/

@H_403_0@if m >5{

@H_403_0@ print("hello")

@H_403_0@}


实际应用

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

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

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


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


@H_403_0@if url !=nil {

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

@H_403_0@ let request = NSURLRequest(URL: url!)

@H_403_0@}


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

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

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

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

@H_403_0@ let request = NSURLRequest(URL: url)

@H_403_0@}


实际的应用技巧

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

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

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

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

@H_403_0@var string:NSString?

@H_403_0@string ="hello"


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

@H_403_0@print(string?.length)

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

@H_403_0@print(string!.length)


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

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

@H_403_0@let len =10 + string!.length


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

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

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


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

@H_403_0@var array:[String]?

//追加一项内容

@H_403_0@array = ["zhangsan","lisi"]

@H_403_0@print(array?.count ??0)


@H_403_0@3,循环

传统的写法,OC几乎一样

@H_403_0@注意:使用var,而不是let

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

@H_403_0@ print(i)

@H_403_0@}


更加方便的写法:

in指定范围

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

@H_403_0@for iin 0..<10 {

@H_403_0@ //输出0~9

@H_403_0@ print(i)

@H_403_0@}


@H_403_0@for iin 0...10 {

@H_403_0@ //输出0~10

@H_403_0@ print(i)

@H_403_0@}


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

@H_403_0@for _in 0...5 {

@H_403_0@ print("hello")

@H_403_0@}

原文链接:https://www.f2er.com/swift/324613.html

猜你在找的Swift相关文章