zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    (Java实现) 洛谷 P1603 斯诺登的密码
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1028 数的计算
    (Java实现) 洛谷 P1028 数的计算
    (Java实现) 洛谷 P1553 数字反转(升级版)
    8.4 确定两个日期之间的月份数或年数
    (Java实现) 洛谷 P1553 数字反转(升级版)
  • 原文地址:https://www.cnblogs.com/fusheng-it/p/6842111.html
Copyright © 2011-2022 走看看