玩儿转Swift——学习笔记(持续更新)

前端之家收集整理的这篇文章主要介绍了玩儿转Swift——学习笔记(持续更新)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近在学习IOS开发,将笔记记下!

@H_502_5@
  • 常量和变量

    • let - constants 常量
  • let maxNum =32
    • var - variables 变量
    var index = 0
    • 同时声明多个变量
    var x=0.0,y=0.0,z=0.0
    • 类型可以推导出来,也可以显式的声明
    var index = 0 //这里是一个整形
    var str:String = "123"  //这是一个字符串
    • 基本类型
      Int(整型)
      Double,Float(浮点数)
      String(字符串)
      Bool(布尔类型)

    • 数字类型
      十进制
      二进制 0b101
      八进制 0o5
      十六进制 0x5

    • 可以用科学计数

    let float_a = 0.012
    let float_b = 1.2e-2  //值为0.012
    • 数字可以用下划线隔开
    let bigNum_b = 1_000_000
    let bigNum_c = 1_0000_0000
    • 类型转换
    let num_a:Int = 1
    let num_b:Double = 1.3232
    let num_c:Double = num_b + Double(num_a)  //此处需要强制转换
    @H_502_5@
  • 布尔类型与if语句

    • if后面可以不用加括号,但是大括号是必须的。

    • 条件不能为其他类型,必须为布尔类型

  • let isTrue = true
    if isTrue
    {
        println("is true") 
    }else
    {
        println("is false")
    }
    @H_502_5@
  • 元组 Tuples
    • 将多个不同的值集合位一个数据
  • var registrationResult = (true,"慕课女神""女"let (isRegisterSuccess,nickname,gender) = registrationResult
    
    isRegisterSucss   //此处就为true
    nickname          //"慕课女神"
    gender            //"女"
    
    可以这样取值
    registrationResult.0   //此处就为true
    registrationResult.1   //"慕课女神"
    registrationResult.2   //"女"
    • 通过下划线忽略部分数值
    let (isRegisterSuccess,_,_) = registrationResult
    @H_502_5@
  • Optionals 可选值

    • 或者是一个值,或者是没有值
    • 没有值的时候是nil
  • var a:Int?
    a                //此时是nil
    a = 12           //此时是(Some 12)
    a!               //此时是12 通过!解包
    • Optional Binding直接被解包
    var age:Int? = 18
    if let yourAge = age
    {
        pringln("\(yourAge)")  
    }
    @H_502_5@
  • 基础运算符

    • 赋值操作
  • var b = 1
    var a = b
    • 加减乘除,求余(模)
    let a = 5
    let b = 3
    var c = 0 
    
    a + b
    a - b
    a * b
    a / b        //此处除数不能为0,求余也不能为0
    a % b
    
    
    Int.max      //整型的最大值
    Int.min      //整型的最小值
    • “++”,”- -“自加自减
    var c = 0
    c++
    c--
    c += 2
    • 比较操作符(==,!=,>,<,===,!==)

    6.nil聚合运算符
    - a必须是Optional,b需要和a解包后的类型相同

    a ?? b              //a != nil ? a : b
    @H_502_5@
  • 区间运算符与for-in
  • [a,b] a...b                //闭区间
    [a,b) a..<b                //前闭后开
    
    for index in 0..< array.count
    {
        array[index];           //index是一个常量
    }
    @H_502_5@
  • 逻辑运算符
  • a               //非
    a || b            //或者
    a && b            //并且
    @H_502_5@
  • String 和 Character
  • //字符串声明
    var str1= "hello"          //可变字符串
    let str2 = "world"         //不可变字符串
    var str3 = ""
    var str4 = String()
    
    str1.isEmpty               //判断字符串是否为空,这里为false
    
    for c in str1
    {
        println(c)             //将每个字符打印出来
    }
    
    单独字符
    var ch:Character = "a"
    
    str1.append(ch)            //helloa
    //不能使用str1 += ch,字符串之间可以使用
    
    count(str1)        //计算出字符串的长度
    
    //Unicode
    \u{1F496} //swift 计数1, OC计数2;
    @H_502_5@
  • String基本操作
  • var name = "第二章,字符串的运算法"
    var string = "hello world"
    
    //字符串可以==比较
    name == string           //false
    //通过字典序进行字符串大小判断
    let str1 = "abc"
    let str2 = "d"
    str2 > str1               //true
    name.hasPrefix("第二章") //判断是否包含前缀true
    name.hasSuffix("运算法") //判断是否包含结尾false
    string.uppercaseString  //转换成大写HELLO WORLD
    string.lowercaseString  //转换成小写hello world

    11.导入foundation使用String更多字符串功能

    import Foundation
    
    
    str.capitalizedString                 //单次首字母大写
    
    str.uppercaseString                   //所有字母大写
    
    str.lowercaseString                   //所有字母小写
    
    str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())                   //去掉两边的空格
    
    str.stringByTrimmingCharactersInSet(NSCharacterSet.(charactersInString: " !"))           //去掉两边的空格和叹号
    
    str.componentsSeparatedByString(" ") //按空格分割字符串成单词
    
    str.componentsSeparatedByCharactersInSet(NsCharacterSet(charactersInString:" !-"))            //各种字符分割字符串
    
    str.join(["1","2","3"])           //用str来连接数组中的元素
    
    str.bridgeToObjectiveC()              //转换成ObjectiveC字符串对象

    12.String.Index,Range

    //range 查早字符串子字符串范围
    
    var str="Welcome to Play Swift! Step by Step learn Swift language from now!"
    
    str.rangeOfString("Step")           //{some "23..<27"}
    
    str.rangeOfString("Step",options:NSStringCompareOptions.BackwardsSearch)                    //从后向前搜索 {some31..<35}
    
    str.rangeOfString("welcome",options:NSStringCompareOptions.CaseInsensitiveSearch)           //忽略大小写搜索{ some0..<7}
    
    //索引 
    str.startIndex
    
    str.endIndex
    
    let strRange = Range<String.Index(start:str.startIndex,end:str.endIndex)   //新建一个range
    
    //索引定义
    let startIndex:String.Index = str.startIndex
    
    let endIndex:String.Index = advance(str.startIndex,10)
    
    //索引和 range 组合 可以对字符串 添加删除 替换

    13.数组的初始化

    ar array =["1","3","4"]    //数组类型相同 
    var array1:[String] = ["1","4"]
    var Array3:Array<String>= ["1","4"]
    
    //创建空数组
    var array4 = [Int]()        //0 elements 0个元素
    var str = String()          //调用类对象 
    var array5 = Array<String>()
    
    //可用 array =[] 清空数据 当时数据类型已经确定
    array=[String]()
    array=Array<String>()
    
    //数组元素添加 array.append()
    array6=[Int](count:10,RepeatValue:0)   //初始化重载 10个为0的元素被创建
    var array7 = [2,2,4]
    var array8= array6+array7              // 结果为10个0然后2 2 4 猜测等同与array8=array6.append(7)

    14.数组基本操作

    //第一种隐式地声明,后两种显式地声明
    var array = ["A","B","C"]
    var array1:[String] = ["A","C"]
    var array2:Array<String> = ["A","C"]
    
    //修改数组中的数据
    array[0] = "D"
    array
    
    //写一个空数组并给它赋值
    var array3 = [Int]()
    var array4 = Array<String>()
    var array5:[Int] = []
    array5.append(2)
    array5
    
    
    //清空数组的值并重新赋值。注意:清空数组但不会改变数组可以存储的类型
    array = []
    array.append("a")
    array
    
    
    //将一个数组的值赋成几个一样的值
    array4 = [String](count: 5,repeatedValue: "A")
    
    //加(合并)一个数组
    array3.append(1)
    var array6:Array<Int> = [2,3,4,5]
    var array7 = array3 + array6

    15.字典的初始化

    //字典意义通过 键快速找到值 如同C++ JAVA中的Map 可 HashMap- - 字典是无序的
    var dictionary =[1:"A",2:"B",3:"C"]
    //键:值 Key:Value
    //字典定义:
    var dict<Int,String>
    [Int:String]
    [String:String]
    
    var course =[76:"课程1",77:"课程2",128:"课程3"]
    var course2:Dictionary<Int,String>=[76:"课程1",128:"课程3"]
    var course3:[Int:String]=[76:"课程1",128:"课程3"]
    //定义个空字典
    var dict = Dictionary<Int,String>() 
    var dict2=[Int:Sring]() 
    //字典的清空 如同array 去掉声明关键字var
    dict=[:]

    16.字典的基础操作

    //统计有多少项键值对
    dict.count
    //返回是否为空
    dict.isEmpty
    //获取制定key的value值返回可选类型
    dict[key] 
    //添加键值对
    dict[newKey] = "new Value"
    //值可以重复
    dict[oldKey] = "new Value"
    //返回将要修改的key对应的原值
    dict.updateValue("value",forKey:key) 
    //移除一个键值对返回被删的值
    dict.removeValueForKey(key)
    //快速遍历
    for (key,value) in dict
    //字典key的数组
    dict.keys 
    //字典value的数组
    dict.values
    //强制转换成数组
    Array(dict.keys) 
    [Int](dict.keys)

    17.循环结构

    for-in 循环的应用场景:
    遍历区间: for i in 0...99
    遍历字符串: for c in str
    遍历数组: for item in arr / for (index,item) in enumerate(arr)
    遍历字典: for (index,item) in dict
    
    不知道需要循环多少次,使用 while 循环。比如,查找。

    18.选择结构

    //1. condition 条件是不需要加()
    //2. statement 即使只有一句话 也要加 {}
    if condition{
        statements
    }else if condition{
        statements
    }else{
        statements
    }
    
    //1. switch不需要显示的写break,所以判断多个值用逗号分割
    //2. case可以是任何类型
    switch char
    {
        case "a","A":
            println("Great");
        case "B":
            println("Just so-so");
        defalut:
            println("It's bad");
    }

    19.switch语句的高级用法

    //可以case加区间
    case 0..<100:
    //可以使用元组
    case (Int,Int) :
    //where
    case (x,y) where x=y:
    // 元组加区间
    case (-2...2,-2...2):
    //switch 可以进行选择判断、可以进行区间 切必须涵盖所有的情况。可以使用fallthrough进行通过本次判断

    20.控制转移和二位数组

    //1.allthrough下面的case不能声明变量
    //2.break跳出循环体
    //3.break跳出当前switch判断
    //4.continue跳出当前操作继续循环
    //5.给循环一个标签,可以通过跳出该标签所示循环直接跳出多层循环
    mainloop:for i in 100{
        for j in 10{
            break mainloop 
        }
    }

    猜你在找的Swift相关文章