• Swift学习(1基础语法)


    Swift     基础语法

    基本

    1.取消了预处理命令

    2.取消了指针的概念

    3.取消了NS前缀

    4.大量将类替换成struct

    5.“;” 在同一行用来分割语句,如果不是同一行可以省略

    6.可选项

    7.playground

    8.条件语句”if”,空执行”()”

    9.没有非0即真的逻辑

    10.switch  (1)可以针对任意类型的值进行分支,不在局限在整数

    (2)且一般不需要break。

    (3)可以用“,”分割可选值

    (4)所有的分支最少需要一条指令,如果没用指令的时候,就用break

    11.传统的for循环已经被取消。 统一用for in   ,并支持反转(正序逆序)等

    12.i++, ++1 , i—, —i 都已经被取消

    13.swift目前没有代码的自动布局,只能用frame或者xib

    可选值

    1.使用!解包

    2.使用 ?? 解包(实际上是一个特殊的三目),优先级较低,一般用()包一下

    3.连用语法    if let / var    判断对象的值是否为nil,进入分支后不需要解包 

    4.连用语法   guard let       

    1.{}在oc中的特殊用法, 常见的tableview的包装

    字符串 string  (注意区别NSString)

    1.支持遍历 .characters

    2.lengthofbytes  返回指定编码状态下的字节长度

    3.characters.count 返回展示的长度(推荐使用)

    4.将string 转换成 NSString

    5.字符换的拼接

    6.使用格式字符串

    7.字符串的子串 

    类型转换 as

    数组

    1.swift存放类型可以存基础数据类型和结构体不需要包装,oc需要包装NSNumber,NSValue(包装结构体)

    2.如果数组类型中的类型不一致,自动推导成NSObject

    注意的是,CG 结构体中,还是需要用NSValue包装

    3.swift 中还有一种类型,AnyObject —> 任意对象,可以没有父类,这个跟oc所有的类都有父类是不同的

    4.遍历数组

      (1) 与oc一样直接用[]去下标 for i in 0..<array.count 

    (2)与OC一样用for in 遍历   for s in array

    (3)与OC一样用同时遍历下标和内容                 for e in array.enumerated()

    (4)swift特有的同事遍历下标和内容 for (n,s) in array.enumerated()

    (5)反序遍历 for s in array.reversed()

    (6)反序遍历下标&内容(先枚举后反序) for (n,s) in array. enumerated().reversed()

    5.数组的增删改

    (1)OC中数组可分为不可变NSArray和可变NSMutableArray,swift中用的是let,var来声明

    (2)追加元素 array.append(“111”)

    (3)修改通过下标定位修改 array[0] = “222”

    (4)删除 array.remove(at:3); array.removeAll(keepingCapcity:ture)(移除但是保留空间)

    6.数组的初始化可变数组,初始化容量为0,若插入后,如果还要插入容量不够,则容量=当前容量*2。如果初始化指定容量,可以避免插入时重复分配空间

    var array = [int]()  

    7.数组的合并 var array1 ,let array2。

    (1) array1 += array2 要合并的数组的类型必须一致,不同类型   

    字典

    1.字典的定义,OC中用{} ,swift中用[].   例如  let dict = [“name”:”张三”,“age”:10]

    特例: let array= [[string : AnyObject]] = [ [“name”:”张三”,”age”:10] , [“name”:”李四”,”age”:15]]

    2.字典的增删改 OC中有可变和不可变,swift中let 定义不可变, var 定义可变

    var dict = [“name”:”张三”.”age”:15]

    新增 如果key不存在就是新增

    dict[“title”] = “大哥”

    修改 如果key存在就是修改

    dict[“name”] = “李四”

    删除  —指定key删除

    dict.removeValue(forKey:“name”)

    注意:字典是通过key来定位的,且key必须是可以 hash的(每一个key可以转换成一个唯一的整数)

    3.字典的遍历, OC遍历只能通过遍历key,然后才能取值

    for e in dict e 是一个值对 用e.key  e.value  分别取值

    for (key,value) in dict    key,value 分别取值

    11.字典的合并

    var dict1 =  [“name”:”张三”.”age”:15]

    let  dict2 = [“name”:”李四”,“title”:“大哥”]

    字典不能和数组类似的直接相加!!!

    for e in dict2 { 

    dict1[e.key] = dict2[e.key]

    }

    合并的过程,如果key存在只是修改,不存在是新增

    //demo下载地址:https://github.com/fushengit/Learn-Swift

  • 相关阅读:
    【C++】<bits/stdc++.h>
    【网易】被3整除
    【TCP/IP详解】UDP:用户数据报协议
    【网易】牛牛找工作
    【C++】<numeric>中iota函数:递增序列填充

    今天好像找到C语言延迟输出的原因了
    C语言第2
    c语言新知
    glade No package 'libxml-2.0' found
  • 原文地址:https://www.cnblogs.com/fusheng-it/p/6842111.html
Copyright © 2020-2023  润新知