金沙国际官网_金沙国际平台登录

因为这个金沙国际官网_金沙国际平台登录网站与很多的大型澳门赌场都有合作,金沙国际官网_金沙国际平台登录尽职尽责,高效执行,保持好奇心,不断学习,追求卓越,点击进入金沙国际官网_金沙国际平台登录马上体验吧,所以现在也正式地开始了营业。

您的位置:金沙国际官网 > 编程 > Swift循环遍历集合方法

Swift循环遍历集合方法

发布时间:2019-11-07 03:30编辑:编程浏览(51)

    /*

    use_frameworks!

    A、用cocoapods 导入swift 框架 到 swift项目和OC项目都必须要 use_frameworks!
    B、使用 dynamic frameworks,必须要在Podfile文件中添加 use_frameworks!

    (1)如果在Podfile文件里不使用 use_frameworks! 则是会生成相应的 .a文件(静态链接库),通过 static libraries 这个方式来管理pod的代码。   
    
    (2)Linked:libPods-xxx.a包含了其它用pod导入的第三方框架的.a文件。
    
    (3)如果使用了use_frameworks! 则cocoapods 会生成相应的 .frameworks文件(动态链接库:实际内容为 Header + 动态链接库 + 资源文件),使用 dynamic frameworks 来取代 static libraries 方式。   
    
    (4)Linked:Pods_xxx.framework包含了其它用pod导入的第三方框架的.framework文件。
    

    use_frameworks! -> dynamic frameworks 方式 -> .framework
    #use_frameworks! -> static libraries 方式 -> .a

    关于Library 和 Framework 可以参考:
    http://blog.lanvige.com/2015/...

    (1)swift项目cocoapods 默认 use_frameworks!
    (2)OC项目cocoapods 默认 #use_frameworks!
    

     

     while循环

    用cocoapods导入OC框架到swift项目:

    (1)#use_frameworks! 必须创建头文件,在头文件里面 #import "AFNetworking.h"

    (2)use_frameworks! 如果有头文件,在头文件里面 #import "AFNetworking/AFNetworking.h",其它swift文件中用到不需要再import;如果没有头文件,则在每个需要用到的swift文件里 import AFNetworking。

    第一种方式:for-in循环

    OC延续了C语言的for循环,在Swift中被彻底改造,我们无法再使用传统形式的for循环了

     格式:while(循环保持条件){需要执行的语句}

    用cocoapods导入swift框架到swift项目:

    (1)必须use_frameworks!

    (2)不需要头文件,在需要用到框架的swift文件里 import Alamofire

    遍历数组和字典:

     OC:

    用cocoapods导入OC框架到OC项目:

    (1)#use_frameworks! 在需要用到的文件里 #import "AFNetworking.h";也可以通过pch文件,用法类似swift中的头文件。

    (2)use_frameworks! 与(1)类似,用法上没有区别。

     1  //遍历数组
     2     let iosArray = ["L", "O", "V", "E", "I", "O", "S"]
     3 
     4     for index in 0...6 {
     5         print(iosArray[index])
     6     }
     7 
     8     for index in 0..<6 {
     9         print(iosArray[index])
    10     }
    11 
    12     for element in iosArray {
    13         print(element)
    14     }
    15 
    16     //遍历字典
    17     let iosDict = ["1": "one", "2": "two", "3": "three", "4": "four"]
    18     for (key, value) in iosDict {
    19         print("(key): (value)")
    20     }
    21 
    22     //单独遍历字典的key和value
    23     let keys = iosDict.keys
    24     for k in keys {
    25         print(k)
    26     }
    27 
    28     let values = iosDict.values
    29     for v in values {
    30         print(v)
    31     }
    

     int i = 0;

    用cocoapods导入swift框架到OC项目:不考虑

     

     int sum = 0;

    总结:

    (1)用swift项目考虑到会使用 OC 和 swift 两种第三方框架,所以Podfile中使用swift项目默认的 use_frameworks! 更为妥当,并且frameworks动态链接库具有一定的优势。 

    (2)可以建立一个Bridge头文件,用来import那些OC框架的.h文件:#import "xxx/xxx.h"。或者不建头文件,像swift框架一样,直接在需要用到的swift文件中import。


     while (i <= 10) {

    如上遍历数组使用了2种方式

     sum = i++;

    1、
    第一种方式是Swift中普通的for循环语法,在索引index和遍历范围0...6之间用关键字in,这里要注意0...6的表示的范围是:0<= index <= 6,而0..<6表示的是:0<= index < 6,这里要注意的是没有:0<..6的形式。只要熟悉了Swift语法,以上这些并不难理解。
    拓展1:0...6的形式还可以取出制定范围的数组中的元素,代码如下:

     }

    1   let sectionArray = iosArray[1...4]
    2     print(sectionArray)
    3     输出:
    4     ▿ 4 elements
    5         - 0 : "O"
    6     - 1 : "V"
    7     - 2 : "E"
    8     - 3 : "I"
    
    拓展2:0...6的形式还可以用来初始化创建数组,代码如下:
    
     1  let numbers = Array(1...7)
     2     print(numbers)
     3     输出:
     4     ▿ 7 elements
     5     - 0 : 1
     6     - 1 : 2
     7     - 2 : 3
     8     - 3 : 4
     9     - 4 : 5
    10     - 5 : 6
    11     - 6 : 7
    

     

    也就是说以后遇到涉及范围的情况都可以尝试0...6这种形式,看看是否可以迅速获取指定范围内的元素,可用的地方还有很多,小伙伴自己掘金吧。

     while (i <= 10)

    2、
    第二种方式类似于OC中的快速遍历,不需要索引直接就可以访问到数组中的元素,也很好理解。

     sum = i++;


     

    字典的遍历可分为同时或者分别遍历key和value

     NSLog(@"%d", sum);

    1、
    同时遍历key和value时利用了Swift的元组,元组可以把不同类型的值组合成一个复合的值,使用起来非常方便,这样就可以同时拿到字典的key和value了。

     如果只有一条指令while后面的大括号可以省略

    2、
    单独遍历字典的key个value时,需要注意的是,keys和values并不是Array,因此无法直接使用keys[0]的形式访问,他们实际的类型是LazyMapCollection<[Key : Value], Key>,显然不是一个数组。当然我们可以将他们转换成数组,如下:

     

        1 //将字典的kyes转换成数组 2  let keys = Array(iosDict.keys) 3 print(keys[0]) 
    

     Swift:

    由于字典是无序的,所有这么做的意义并不大。

     0.while后的圆括号可以省略

    第二种方式:Swift为for循环带来的惊喜

    将以下内容单拿出来作为第二种方式不太合适,其实这部分还是属于Swift的for-in循环,单独拿出来是出于对这种方式的喜爱,也让大家在看的时候更加醒目。

     1.只能以bool作为条件语句

    反向遍历

     2.如果只有条指令while后面的大括号不可以省略

     1     //倒序遍历数组
     2     for index in (0...6).reversed() {
     3         print(iosArray[index])
     4     }
     5 
     6     for element in iosArray.reversed() {
     7         print(element)
     8     }
     9 
    10     //倒序遍历字典
    11     for (key, value) in iosDict.reversed() {
    12         print("(key): (value)")
    13     }
    
    1、如上无论是0...6这种索引方式还是快速遍历,都可直接调用reversed()函数轻松实现反向遍历。
    

     */

    2、
    对于字典的反向遍历,有些小伙伴可能会有些疑问,字典是无序的,反向和正向遍历有区别吗,似乎意义不大。这里需要说明的是,字典的无序是说不保证顺序,但是在内存中是按照顺序排列的,只是这种顺序不一定按照我们存入或者编码的顺序排列,因此字典的反向遍历也是有意义的。

     

    3、
    看过我去年总结的OC循环遍历的小伙伴一定还记得,当我们需要在遍历集合时改变集合中的元素时,正向遍历会偶尔出现崩溃的问题,尤其是数据量较大时几乎每次都会崩溃,当我们使用反向遍历时就没有崩溃的问题了,在Swift中为了保证程序的稳定,也建议在遍历集合需要修改集合元素时采用反向遍历。

    var i:Int = 0

    拓展:reversed()函数实际上是返回给我们一个顺序完全颠倒的集合,那么我们就可以利用这个函数得到一个倒序的集合,非常方便,代码如下:

    var sum:Int = 0

       1 //获取倒序数组 2  let reversedArray = Array(iosArray.reversed()) 3 print(reversedArray) 
    

    while (i <= 5)


    {

    forEach遍历

        i += 1

    如果还有小伙伴认为for-in遍历繁琐,Swift还提供了一种更加简洁的遍历方式forEach,代码如下:

    本文由金沙国际官网发布于编程,转载请注明出处:Swift循环遍历集合方法

    关键词:

上一篇:canvas实现百度

下一篇:没有了