美文网首页
Swift学习之路-day01

Swift学习之路-day01

作者: 天寒地裂 | 来源:发表于2018-09-26 13:27 被阅读12次

    Swift学习之路-day01

    本人iOS开发,使用的是OC语言开发,最近利用空闲时间学习Swift,并整理一下学习进度及学习笔记

    常亮与变量

    在iOS中,定义一个变量要区分可变与不可变之分,而OC语言里区分可变与不可变是NSNSMutable来区分,如NSStringNSMutableStringNSArrayNSMutableArray
    而在Swift中是用letvar区分
    let 定义一个常量
    var 定义一个变量

    可选项

    Optional是Swift的一大特色,在OC中是没有的。它的意义是定义一个可选类值,这个值可能没有值,也可能有一个类值。
    如定义一个Int类型的值,它可能为nil,也可能有值
    在定义变量时,如果指定是可选的,表示变量是一个可选类型的值,也可以是nil
    定义变量时,在类型后面添加一个,表示变量是可选的
    变量可选的默认值是nil

        let y: Int? = 20        
    

    或者

        var x:Int?
        x = 10
        x = 100
    

    ?用来定义一个可选的Int类型,可能没有值,也可能有一个整数

    !强行解包 - 从可选之中强行获取对应的非空值,如果真的是nil 就会崩溃,崩溃信息如下:
    奔溃信息

    Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
    

    定义 可选项使用?
    解包使用 !,准备计算

    let y:Int?
    

    只是定义了一个y 没有初始化
    let y:Int? = 20 则是初始化,给常量设置数值,初始化的工作能做一次

    var x:Int?
    

    定义了一个x,可选默认为 nil

    swift 三目运算符

    ??是一个简单的三目
    如果有值,则使用值
    如果没有值,使用??后面的值替代

        let name: String? = "老王" //"老王"
        print((name ?? "") + "你好")
        
        print(name ?? ""+"你好”)
    

    ??操作符号的优先级’底’,在使用是最好加上()包一下

    guard let & if let 的技巧

    if let 连用,判断对象的值是否为nil,{}内一定有值,可以直接使用,不需要解包
    常量是可选项(Optional),if let判断后不需要解包(!),{ }内一定有值
    guard let swift2.0推出,如果用if let 凭空多了一层分支,guard let是降低分支层次的办法

    guard let

    使用同名的变量接收值,在后续使用的都是非空值,不需要解包

    if let

    同样使用户相同名的变量接收值,非空值仅在{}内使用,

    限定作用域,oc代码中可以适当地加{}来限定变量的作用域。
    {}包装代码 ,()是表示执行

    UILabel *myLabel = ({
        UILabel *l = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 120, 160)];
        l.text = @"hello world";
        [self.view addSubview:l];
        l;
    });
    

    注意

    swift语言中一行代码的结束不用“;”(分号)结束,而是直接回车结束
    oc语言一个操作代码结束则需要“;”(分号)结束
    oc中的强转:

    (int)a
    

    swift的强转:

    Int(a)
    

    相关文章

      网友评论

          本文标题:Swift学习之路-day01

          本文链接:https://www.haomeiwen.com/subject/uyvdoftx.html