zoukankan      html  css  js  c++  java
  • Swift(一,创建对象,类型推导,基本运算,逻辑,字符串,数组,字典)

    swift用起来刚开始感觉有点怪怪的,但用了一段时间觉得还是挺好用的,哈哈.毕竟都是要有一个过程的嘛.

    我就写一些自己在使用swift的时候的注意点吧,如有不正之处,还请指正!

    一.在开发中优先使用常量,只有发现该标识符需要修改的时候,再改成变量,这样做可使数据更安全,以防止队友不小心把你的值修改了.

    二.创建一个对象的时候,比如创建一个UIView对象

    //1.创建UIView对象
    let rect : CGRect = CGRectMake(0, 0, 100, 100)
    let view : UIView = UIView(frame: rect)
    //2.修改UIView内部属性
    //2.1修改view的透明度
    view.alpha = 0.5
    //2.2 修改view的背景色
    view.backgroundColor = UIColor.redColor()
    
    //3.创建UIButton对象
    /*
        在swift使用枚举类型,有2种方式
        1.枚举的类型.具体的类型
        2.直接点-->   .具体的类型
    */
    let btn : UIButton = UIButton(type: .Custom)
    //4.修改btn的内部属性
    btn.frame = CGRectMake(0, 0, 50, 50)
    btn.backgroundColor = UIColor.greenColor()
    btn.setTitle("按钮", forState: .Normal)
    
    view.addSubview(btn)
    
    
    //5.在swift中也能这样添加一个按钮
    let rect1 : CGRect = CGRectMake(0, 0, 20, 20)
    let btn1 : UIButton = UIButton(frame: rect1)
    btn1.backgroundColor = UIColor.grayColor()
    view.addSubview(btn1)

    三.swift中的类型推导,首先swift是强类型语言,然后他的每个标识符都有自己的类型.注意的一点是,例如

    //let a : Int = 10
    //可直接写成
    let a = 10
    
    var c = 1.44
    c = 20
    //修改后会把20当成20.0来看 所以不会报错
    
    var b = 20
    // b = 1.44 错误写法

    四.swift中的基本运算需要注意的就是swift中没有隐式转换,所以当类型不同的时候不能运算,要先转换成同一类型:

         1>Double -->Int         Int (b)

         2>Int -->Double         Double(a)

    五.逻辑分支中,有if,switch,guard,while,do While(do-->repeat)等,共同的地方都是能省去()

      1>一,if后面的判断没有非0(nil)即真  二,if后面判断句必须有明确真假(Bool -->true / false)

          2>一,switch的case后面不用加break,编译器会自动加.  二,case后面可以接多个判断条件,并且以","隔开  三,有时候需要穿透的话,自己在case后面加上fallThrough

               switch比在OC中更强大的地方在于,它支持多种数据类型,包括  1--->浮点型;  2-->字符串;  3-->还能判断区间

               半开半闭区间的表示方法:例如1..<10 --->[1 10)

               闭区间的表示方法 :  例如 1...10  ---->[1 10]

               这就不写demo了,用起来还是挺方便简单的.

      3>guard翻译过来中文就是守卫,门卫的意思,它就是一层一层条件判断,全部通过后最后执行后面的的代码块,例如

    let age = 20
    let money = 20
    let id = 1
    
    func online(money : Int,age :Int ,id :Int){
        //1.判断年龄
        guard  age >= 18  else{
            print("回家去")
            return
        }
        //2.判断是否带了身份证
        guard id >= 1   else{
            print("回家拿身份证")
            return
        }
        guard money >= 10 else{
            print("回家拿钱")
            return
        }
        print("上机")
    }
    //调用的时候,最前面的参数不用传键值对,传个值就行
    online(money,age :age ,id: id)

      4>do While---->用法在swift里面把do换成repeat就行了.其他的和OC中差不多.

    六.字符串的基本使用.例如

    //1.定义字符串
        //1.1 定义不可变字符串
        let str = "hello world"
        //1.2  定义可变字符串
        var strM = "hello swift";
        strM = "hello OC"
    
    //2.字符串的使用
        //2.1 遍历所有字符串
    for c in str.characters{
        print(c)
    }
        //2.2 获取字符串的长度
    let length = str.characters.count
    
    //3.字符串的拼接
        //3.1 两个字符串直接的拼接
    let str1 = "s"
    let str2 = "j"
    let str3 = str1 + str2
        //3.2 字符串和其他标识符的拼接
    let name = "cjh"
    let sex = "man"
    let person = "my name is (name),is (sex)"
        //3.3 拼接过程格式化
    let min = 2;
    let second = 22;
    let time = String(format: "%02d:%02d", arguments: [min, second])

        字符串的截取,例如

    let str = "www.baidu.com"
    //1.方式一:将String类型转成NSString类型 as就可以进行转化
    let header = (str as NSString).substringToIndex(3)
    let footer = (str as NSString).substringFromIndex(10)
    let range = NSMakeRange(4, 5)
    let middle = (str as NSString).substringWithRange(range)
    
    //2.方式二: 使用String类型的方法
    let endIndex = str.startIndex.advancedBy(3)
    let header1 = str.substringToIndex(endIndex)
    
    let startIndex = str.endIndex.advancedBy(-3)
    let footer1 = str.substringFromIndex(startIndex)
    
    let range1 = Range(start: endIndex.advancedBy(1), end: startIndex.advancedBy(-1))
    let middle1 = str.substringWithRange(range1)

    七.关于swift中的数组,基本用法倒是容易,我觉得要注意的就是当两个相同类型的数组需要合并的时候,直接相加就行了,但是当两个不同的类型的数组需要合并的时候,需要先自己转换类型为NSObject的类型了.例如

    //1.定义数组
        //1.1 定义不可变数组
    let arr = ["a","b","c"]
        //1.2 定义可变数组
    var arrM = ["aaa","bbb"]
    //2.对可变数组的基本操作
        //2.1 添加元素
    arrM.append("ccc")
    arrM.append("ddd")
        //2.2 删除元素
    arrM.removeAtIndex(2)
    print(arrM)
        //2.3 修改元素
    arrM[0] = "zzz"
    print(arrM)
        //2.4 获取元素
    arrM[1]
    
    
    
    //3.遍历数组
    //3.1 最基本的遍历方式
    for i in 0..<arr.count{
        print(arr[i])
    }
    //3.2 遍历数组中的一部分元素
    for i in 0..<2{
        print(arr[i])
    }
    for name in arr[0..<2]{
        print(name)
    }
    //3.3 for 增强遍历
    for name in arr{
        print(name)
    }
    //3.4  下标 和元素 都获取
    for(index,name) in arr.enumerate() {
        print(index)
        print(name)
    }
    //4.数组的合并:如果两个数组类型一致,直接相加
    let arr1 = ["abc","def"]
    let arr2 = ["abc","aaaa"]
    let arr3 = arr1 + arr2
    
    
    //
    //如果类型不一致,转换成NSObject,再遍历另一个元素全部加进去
    let arr4 = [1,2,3]
    let arr5 = ["a","b"]
    
    var arr6 = [NSObject]()
    arr6 = arr5
    
    arr6.append("c")
    
    
    for name in arr4{
       
        arr6.append(name)
        
    }
    
    
    
    print(arr6)

    八.关于swift中的字典.

    //1.定义字典
        //1.1定义不可变字典
    let dict1 = ["name":"jack","age":18]
        //1.2定义可变字典
    
    var dict2 = ["sex":"man","country":"china","age":11]
    
    //2.对字典的基本操作
        //2.1 添加元素
    dict2["name"] = "lucy"
    dict2.updateValue(1.7, forKey:"height")
    dict2
        //2.2删除元素
    dict2.removeValueForKey("sex")
    //1.7 == dict2["height"]!
    //("height",1.7) == dict2[0]
    //let index = dict2["height",1.7]
    
    /*
    还有一个方法
    removeAtIndex(<#T##index: DictionaryIndex<Hashable, Value>##DictionaryIndex<Hashable, Value>#>)
    官方文档是这样说的,借助百度翻译翻译结果如下
    Used to access the key-value pairs in an instance of Dictionary<Key, Value>.
    用于访问字典<键、值>的实例中的键值对。
    Dictionary has two subscripting interfaces:
    字典有两个操作界面:
    Subscripting with a key, yielding an optional value:
    下标有键,产生一个可选值:
    v = d[k]!
    Subscripting with an index, yielding a key-value pair:
    下标有索引,产生一个键值对:
    (k,v) = d[i]
    */
    dict2.removeAtIndex(dict2.indexForKey("height")!)
    
    print(dict2)
        //2.3修改元素
    dict2["age"] = 20
    print(dict2)
    dict2["height"] = 1.8
    print(dict2)
        //2.4 获取元素
    dict2["name"]
    let v = dict2.indexForKey("height")
    print(v)
    
    
    //3.遍历字典
        //3.1 遍历字典中所有的key
    for key in dict2.keys{
        print(key)
    }
        //3.2 遍历所有的value
    for value in dict2.values{
        print(value)
    }
        //3.3 遍历键值对
    for (key,value) in dict2{
        print(key)
        print(value)
    }
    //4.字典的合并 : 任何情况不能相加
    let dict3 = ["name":"cjh","age":10]
    var dict4 = ["sex":"man","height":1.7]
    for(key,value) in dict3{
        dict4[key] = value
    }

    ok,就这样了.  

                                                                   奈文摩尔 16.5.11

  • 相关阅读:
    js 音乐播放器
    音频播放器在chrome浏览器,play报错
    CSS多行文字超出隐藏加省略号
    css 清楚浮动的几种方式
    npm -g -D -s的区别
    electron-vue初始桌面应用
    vue 关闭浏览器
    webpack基础
    京东数科-百度BCOT---面试
    HTTP面试题
  • 原文地址:https://www.cnblogs.com/naiwenmoer/p/5484070.html
Copyright © 2011-2022 走看看