Swift学习

逻辑分支

if后面的()可以省略 ,没有非即真,没有nil        Bool只有ture和false。


guard  Swif2.0   可以替换if     guard 条件判断  else {条件不成立 } 条件成立

switch 后面的()可以省略掉 , case结束后可以不加break  系统默认加一个break,一个case可以同时判断多个条件。case后加一个关键字fallthrough可以产生case穿透。可以判断浮点型和字符串、区间类型。0...9   开区间0..<10


循环语句

              for  swift3.0之后只支持区间遍历,  若i没有被使用可以用_来代替以达到节约空间的目的


while和do while

              while后面的()可以省略,不支持非空即真


字符串

         String是一个结构体,性能更高,NSString是一个OC对象性能较低。  “”    Swift3.0中 NSSting和Sting之间可以无缝转换  字符串与字符串之间的拼接用+  与其它类型拼接

        用\()


数组

           let声明不可变数字  var可变数组   let array :Array<String> = [""""""""];  let array = [String]()

           array.append("")   array.remove(at:)  array[1]         array.count           for i in 0..<count {}       for item in array{}  for (index, item) in array.enumerated{}

           如果两个数组的元素类型相同,则可以通过+号合并数组  var array = arr1 + arr2

字典

           let dic : Dictionary<String, Any> =  ["":"","":""]       var dic = [String,Any]()

           dic["key"] = value         dic.removeValue(forKey:"key")     dic.updateValue(value, forkey:"key")    for key in dic.keys {}       for value in dic.values{}      for (key, value) in dic {}

           字典的相加不能直接相加,只能遍历其中一个字典,逐个添加到另一个数组中。

元组

           类似与字典和数组,但是更加灵活, let info = (item1,item2)   let info = (name1:item1,name2:item2)    let(name1,name2,name3)= (item1,item2,item3)

可选类型Optional,对空值进行判断

           swift中nil也是一种类型,只有可选类型才能被赋值为nil       

           let a :Optional(String)= nil           let a :String? = nil          a = Optional(value) 或 a = value 此时编译器会自动加上Optional关键字

          取值 print(a)      或强制解包 print(a!)  强制解包会有危险,如果值为nil,强制解包会crash

          可选绑定   if let a = a {} 使可选类型使用起来更加方便,自动解包的功能

          swift中的每一个非可选类型的属性必须有一个非空值,如果为空,必须为可选类型


类型转换 as   as?      as!

            as?转换为可选类型        as!转换为具体类型    一般用于转换Any类型

函数的应用

             内部参数、外部参数:默认即使内部参数也是外部参数,参数名前再加一个标识符即可修改外部参数名称,加一个 _ 符号即可隐藏外部参数名称

             可变参数: 参数的个数是可变的,count :Int...

             默认参数:  coffee:Sting = “雀巢”

             指针参数:swift3.0中的函数参数必须为常量,2.0中可以通过加上var改为变量,所以3.0中可以通过inout取地址符直接找到参数的地址。

枚举类型

               定义方式  enum name :Sting{ case key1 = Sting1  case key2 = sting2}         enum name { case key1   case key2 }   

                enum name :Sting{ case key1 = Sting1 ,key2 = sting2}      
   

               取值:name.key           name(rawvalue:"key")


结构体   值类型,在方法中传递是值传递。是一种数据结构。

               swift中结构体中既可以有属性,也可以有方法。在函数中修改了成员属性必须在函数名前加上关键字mutating。构造函数都是以init开头,构造函数结束时必须给每一个成员属性都初始化。


               class classname :superClass {  }  也可以不继承  声明对象时,需要同时对属性初始化赋值或者定义为可选类型,也可以在构造函数中初始化类的属性。

定义类的属性

                存储属性:存储实例的常量或变量,年龄、姓名等等      var score :Int = 100

                计算属性:通过一定的计算的来的属性,以便以后使用的属性。只读属性,oc中很多没有参数的方法在swift中都可以写成计算属性。平均成绩   var averagescore : Int {   return a*b/0.5}

                类属性:只能通过类名来获取        static var name = name

监听属性

                  属性监听器:willSet{  }        didSet{  }

闭包

               ()->()       @escaping 关键字修饰闭包 

                 闭包循环引用的解决方案:weak var weakself = self          或者  [weak self]  self?.key       或者  [unowed self]

                  如果闭包是最后一个参数,可以写成尾随闭包的形式,要是最后一个参数且是唯一的参数,可以省略()在尾随闭包。

懒加载

            lazy var name :[String]= { 创建一个对象  return name}()  

             lazy var name :[String] = ["","",""]

访问权限

              internal     内部的   默认    本模块,包,target,项目中都可以访问

             open   开放的   跨项目,跨框架,挎包访问

             private 私有的  只有在本类中访问

              filePrivate   当前源文件中访问。 swift3.0

            

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值