• Swift语言


    本文为熟悉使用Objective-C开发iOS快速转入swift开发提供一些便利的途径,没有过多华丽的说明底层原理,也没有过多的概念说明,只提供swift的基本使用以及一些使用示例。高手请让路哈。

    Swift中几种数据类型的简单使用,具体的可以看API文档的相关介绍。

    枚举:

    在其他的语言中枚举的本质是一组整形数字,通过枚举将这些整形数字跟一些有意义的名称联系起来。但是在swift中枚举并没有要求一个枚举值必须对应一个数值,你可以只单纯是一个名称,当然你也可以指定枚举值跟一些数值联系起来,同时数值不局限于整形数值,可以是浮点数值,字符或是字符串。

    case用来定义一行新的成员,也可以将多个值定义到同一行使用逗号分隔
    1
    enum Month{ 2 case January 3 case February 4 case March 5 case April 6 case May 7 }

    同时你也可以将枚举值与数值对应起来:

     1 enum Month:Int{
     2     case January = 10
     3     case February
     4     case March
     5     case April
     6     case May
     7 }
     8 并且使用rawValue来访问原始值:
     9 Month month = Month.Janusry
    10 也可以通过rawValue来创建一个枚举值:
    11 let Jan = Month(rawValue:11)//注意此时是一个可选类型

    数组:

    swift中的数组跟OC的差别就是没有了@符号

    1,创建:

    let array = ["happy","sad","down"]
    
    //OC的数组只能够存储同一种数据类型,在swift中可以存储不同数据类型的值
    
    let array = ["szt","szt1",1,"sff"]

    2,取值

    数组取值同样是通过下标取值的,跟OC一样

    3,遍历

    for item in array
    {
        print(item)
    }

    5,删除:

    swift中数组删除一个元素会将被删除的元素返回

    array.removeAtIndex(1)
    array1.removeAll(keepCapacity: true)移除掉所有元素之后是否保存容量

    6,数组合并:

    数组里面元素同种类型才可以合并

    1 var arr5 = ["123","456"]
    2 var arr6 = [“567","789"]
    3 arr5 += arr6      //数组合并的写法

     字典:

    1,字典的创建跟数组一样用[]

    var dict = ["name":"szt","age":30]

    2,遍历数组有两种方式

    (1)遍历key值

    1 for q in dict.keys
    2 {
    3     print(dict[q])
    4 }

    (2)元组遍历

    1 for (key,value) in dict
    2 {
    3     print(key)
    4   print(value)
    5 }

    3,新增/更新键值对

    /*如果对应的keydict中没有的话就新增,如果有的话就更新*/

    var dict = ["name":"st","age":23]

    更新:dict["name"] = "szt"

    新增:dict["gender"] = "man"

    4,删除:

    dict.removeValueForKey("name")

    5,合并

    var dict2 = ["socore":32]

    for (key,value) in dict2

    {

        dict[key] = value

    }

    字符串:

    OC中的字符串是NSStringswift中是String,而且是一个结构体,性能比OC要高

    1,创建

    创建一个字符串:var str = "Hello, playground"

    格式化创建一个字符串"name = szt,age = 30"

    let num: Int = 23

    let name: String = "szt"

    var  person = "name = (name),age = (num)"

    2,截取:

    截取字符串:在swift截取字符串建议使用OC中截取字符串的方法,所以在创建字符串的时候指明类型为NSString类型的

    1 var str5:NSString = "iOS_developer_SZT"或者
    2 var str5 = ""iOS_developer_SZT"" as NSString
    3 str5.substringFromIndex(2)
    4 str5.substringToIndex(5)
    5 str5.substringWithRange(NSMakeRange(1, 5))

    3,遍历

    swift中的字符串支持遍历的:

    1 var str7 = "www.Baidu.com"
    2 for c in str7.characters    // 在swift2.0之前必须加上.characters
    3 {
    4   print(c)
    5 }

    闭包:

    swift中的闭包相当于OC的block,用于保存一段代码段,使用闭包或是block的好处是可以将闭包或block中的代码段放在后台执行不会卡住主线程,用于执行一些耗时的操作。

    swift中闭包的格式为:

    1  {
    2   ()->()        /*前面一个为输入参数类型,后面一个返回参数类型*/
    3   in
    4   /*闭包中的代码段*/
    5 }

    1,闭包定义

    定义一个输入参数为String类型,返回值为[String]类型的闭包:

    1 let demo = {
    2             (str:String)->[String]
    3             in
    4            /*.......(代码段)*/
    5             return [str,str,str]
    6     }

    2,闭包作为函数参数:

    func loadData(num:Int, finished: ()->())
     {
            print("执行耗时操作")
            finished()    //调用闭包
     }

    调用这个函数:

    loadData(12) { () -> () in

                /*闭包中的代码段*/

            }

    3,闭包中的循环引用:

    闭包的循环引用类似于block中的循环引用,当self对闭包进行强引用,闭包中又对self进行强引用的,这时候后就会引起闭包的循环引用问题。解决的方式时将self进行weak修饰。

    例子:

    class ViewController: UIViewController {
        var finished:(()->())?
        override func viewDidLoad() {
            super.viewDidLoad()
            //闭包的循环引用分析
            /*
            viewController中定义了一个闭包finished,self拥有闭包finish,在self的finish中又强引用了self造成的循环引用,解决的问题就是在
            外面weak 修饰self
            */
            weak var weakSelf = self
            doSomeThing { () -> () in
                print("这是在闭包当中")
                //加!原因是self有可能释放了没值,加!表示肯定self在这里是有值的
                weakSelf!.view.backgroundColor = UIColor.redColor()
            }
        }
        func doSomeThing(finished:()->())
        {
            print("做一些耗时的操作")
            self.finished =  finished
            finished()
        }
        deinit     // 在swift中没有dealloc方法,取而代之的是deinit方法,在页面销毁的时候调用
        {
            print("页面销毁")
        }  
    }
    
    

     函数:

    函数格式

    func 函数名()->()         
    第一个括号表示输入参数类型
    第二个括号表示返回参数类型

     例:

    1,无输入参数无返回值
    func say() ->Void 或 func say() ->() 或 func say()
    
    2,无输入参数有返回值
    func  isOrNot()->Bool
    {
          print("OK")
          return true
    }
    
    3,有输入参数无返回值
    func addNum(b:Int,a:Int)
    {
          print(a+b)
    }
    
    4,有参数有返回值
    func maxNum(a:Int,b:Int) ->Int
    {
           return a > b ? a:b
    }
  • 相关阅读:
    MSE 治理中心重磅升级流量治理、数据库治理、同 AZ 优先
    存储经验:VERITAS NetBackup 安装指导文档
    How to reset the NetBackup authentication password on an MSDP disk pool
    NFS高可用(NFS+keepalive+Sersync)
    非常强悍并实用的双机热备+负载均衡线上方案
    R语言收益率和波动性模拟股票价格COMP226带自测题
    R语言用线性混合效应(多水平/层次/嵌套)模型分析声调高低与礼貌态度的关系|附代码数据
    共享单车数据可视化分析|附代码数据
    非线性混合效应 NLME模型对抗哮喘药物茶碱动力学研究|附代码数据
    拓端tecdat|matlab预测ARMAGARCH 条件均值和方差模型
  • 原文地址:https://www.cnblogs.com/develop-SZT/p/5269787.html
Copyright © 2020-2023  润新知