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

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

您的位置:金沙国际官网 > 编程 > UITableView数据不显示,Swift3新特性汇总

UITableView数据不显示,Swift3新特性汇总

发布时间:2019-11-19 08:33编辑:编程浏览(194)

    出现这个情况的原因是:没有使用 DispatchQueue.main.async

    之前 Apple 在 WWDC 上已将 Swift 3 整合进了 Xcode 8 beta 中,而本月苹果发布了 Swift 3 的正式版。这也是自 2015 年底Apple开源Swift之后,首个发布的主要版本(Swift 3.0),该版本实现了 Swift 演变过程中所讨论并通过的90多个提议。这里我对 Swift 3 的新特性、新变化进行一个总结。

    前段时间公司要求做一个统计,用swift3.0写的,因此整理了一下demo,直接上图

    TableView.reloadData()必须写在那个里面。


    图片 1

    // Asynchronously reload the data and display on the tableview
    DispatchQueue.main.async {
            // Reload the tableview
            self.searchResultTableView.reloadData()
    }

    一、彻底移除在 Swift 2.2 就已经弃用的特性

    代码下载地址:

    顺便提一句我出现的错误现象:我的UIView上有一个Search button,从youtube API上根据用户在文本框中输入的关键字读取youtube返回的Json信息。点击Search button两次才会显示数据,更改关键词以后也是这样,第一次按下Search button,仍然是之前的搜索结果。但在console上,第一次点击Search后,就已经出现新的搜索结果。

    这些特性在我们使用 Xcode 7.3 的时候就已经有告警提示,在 Swift 3 中已将其彻底移出。

     

    1、弃用 ++ 与 -- 操作符

    DispatchQueue.main.async的意思是 异步。就是让reloadData()加载的数据异步更新到main thread上。不然tableView数据只会在后台准备好,下一次按button才会显示。

    过去我们可以使用 ++ 与 -- 操作符来实现自增自减,现已废弃。

     

    var i = 0
    i++
    ++i
    i--
    --i
    

    可以使用复合加法运算(+=)与减法运算(-=),或者使用普通的加法运算(+)与减法运算(-)实现同样的功能。

    2、废除C语言风格的for循环

    我们过去可能习惯下面风格的 for 循环,现在也已废弃。

    现在可以使用 for-in 循环,或者使用 for-each 加闭包的写法实现同样的功能。

    //for-in循环
    for i in 1...10 {
        print(i)
    }
    //for-each循环
    (1...10).forEach {
        print($0)
    }
    

    3、移除函数参数的 var 标记

    在 Swift 函数中,参数默认是常量。过去可以在参数前加关键字 var 将其定义为变量,这样函数内部就可以对该参数进行修改(外部的参数任然不会被修改)。

    var age = 22
    add(age)
    func add(var age:Int) {
        age += 1
    }
    

    现在这种做法已经被废弃,Swift 3 不再允许开发者这样来将参数标记为变量了。

    4、所有函数参数都必须带上标签

    过去如果一个函数有多个参数,调用的时候第一个参数无需带标签,而从第二个参数开始,必须要带标签。

    let number = additive(8, b: 12)
    func additive(a:Int, b:Int) -> Int{
        return a + b
    }
    

    现在为了确保函数参数标签的一致性,所有参数都必须带上标签。

    let number = additive(a: 8, b: 12)
    func additive(a:Int, b:Int) -> Int{
        return a + b
    }
    

    这个变化可能会造成我们的项目代码要进行较大的改动,毕竟涉及的地方很多。所以苹果又给出了一种不用给第一个参数带标签的解决方案。即在第一个参数前面加上一个下划线。
    (不过这个只是方便我们代码从 Swift2 迁移到 Swift3 的一个折中方案,可以的话还是建议将所有的参数都带上标签。)

    let number = additive(8, b: 12)
    func additive(_ a:Int, b:Int) -> Int{
        return a + b
    }
    

    5、函数声明和函数调用都需要括号来包括参数

    我们可以使用函数类型作为参数 ,对于一个参数是函数、返回值也是函数的函数。原来我们可能会这么写:

    func g(a: Int -> Int) -> Int->Int { ... }
    

    当这样非常难以阅读,很难看出参数在哪里结束,返回值又从哪里开始。在 Swift 3 中变成这么定义这个函数:

    func g(a:(Int) -> Int) -> (Int) -> Int { ... }
    

    6、Selector 不再允许使用 String

    本文由金沙国际官网发布于编程,转载请注明出处:UITableView数据不显示,Swift3新特性汇总

    关键词:

上一篇:没有了

下一篇:没有了