最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

swift4更新中所遇到的一些問題總結(jié)

 更新時間:2017年12月20日 11:19:16   作者:我要在河邊釣一整天的魚  
這篇文章主要給大家介紹了關(guān)于在swift4更新中所遇到的一些問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

最近Swift 4發(fā)布了,完整的更新日志請點擊這里 >>: ,我大概看了下官方的更新日志,因為xcode9同時支持Swift4和Swift3.2,所以在升級Swift4的時候心沒有那么的痛,在轉(zhuǎn)換成Swift4時錯誤集中在添加@objc上,如果項目是OC和Swift共存的項目,那么添加@objc會讓你加到懷疑人生。

下面主要給大家介紹了在更新過程中遇到的一些問題,下面話不多說了,來一起看看詳細的介紹吧。

@objc

1、在Swift4中,OC和Swift共存的項目不再無腦將Swift的Public屬性和方法提供給OC,除非Swift中的方法和屬性用@objc標記,這樣就減少了一些代碼的生成從而減少了包的大小。build之后我們是純swift項目所以大部分是在選擇器調(diào)用的方法前面也要添加@objc。

2、我們的項目是Swift的項目所以build保存很快就修改完成,Run起來后如期的Crash了。這個是因為我們的JSON轉(zhuǎn)Model是使用的OC版的Mantle和SwiftJSON進行的解析,那么就要在所有的Model屬性前面添加@objc,不然Mantle在獲取類屬性類型的時候是空的。看到這個時候內(nèi)心是崩潰和拒絕升級Swift4的,所以我們選擇舍棄Mantle使用Codable。

Codable官方文檔

1、在OC中JSON轉(zhuǎn)Model只能轉(zhuǎn)化為對象類型,在Codable支持JSON轉(zhuǎn)為常規(guī)類型。而遇到的更多的是將數(shù)據(jù)模型中的NSNumber改為Int或者Double,這是因為NSNumber是OC的類型不遵守Codable的。

2、有時候我們會在Model中添加一些JSON串沒有的字段進行邏輯處理,類似

struct A: Codable{
 var a: Int? 
 var isSelect: Bool = false
}

因為"isSelect"是為了邏輯處理在JSON串中并不能找到相應的字段,這個時候就會報出數(shù)據(jù)丟失的錯誤,而我們只需要將“isSelect”改成可選就可以了。

stuct A: Codable {
 var a: Int?
 var isSelect: Bool?
}

在這次升級中主要是在改這OC調(diào)用Swift添加@objc的問題和將數(shù)據(jù)解析改成Codable。還有一些錯誤是因為使用Mantle轉(zhuǎn)JSON串出現(xiàn)的問題只要使用JSONEncode,還有會多出字符串長度判斷使用characters的警告刪除它就OK了。

平常使用泛型一個很煩的操作

我定義一個帶有泛型的方法

private func getData<T>(a: T) {
}

直接調(diào)用

self.getData<A>(a)

因為不知道泛型的類型而出現(xiàn)

Cannot explicitly specialize a generic function

的錯誤,  如果不指定類型

self.getData(a)

會出現(xiàn)下面的額錯誤

Generic parameter 'Element' could not be inferred

只能在使用時進行一次強轉(zhuǎn)

self.getData(a as A)

就是讓Xcode推斷出他的類型而不是你告訴他這個泛型是什么類型,這就很煩。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 舉例講解Swift編程中switch...case語句的用法

    舉例講解Swift編程中switch...case語句的用法

    這篇文章主要介紹了Swift編程中switch...case語句的用法,其中fallthrough關(guān)鍵字在switch語句中的使用是重點,需要的朋友可以參考下
    2016-04-04
  • Swift仿選擇電影票的效果并實現(xiàn)無限/自動輪播的方法

    Swift仿選擇電影票的效果并實現(xiàn)無限/自動輪播的方法

    這篇文章主要給大家介紹了關(guān)于Swift仿選擇電影票的效果并實現(xiàn)無限/自動輪播的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • 深入講解C語言編程中volatile修飾符的作用

    深入講解C語言編程中volatile修飾符的作用

    這篇文章主要介紹了C語言編程中volatile修飾符的作用,文章深入到內(nèi)存優(yōu)化方面進行解析,非常推薦!需要的朋友可以參考下
    2015-11-11
  • Swift使用WKWebView在iOS應用中調(diào)用Web的方法詳解

    Swift使用WKWebView在iOS應用中調(diào)用Web的方法詳解

    這篇文章主要介紹了Swift使用WKWebView在iOS應用中調(diào)用Web的方法詳解,使用WKWebView便等于使用和Safari中相同的JavaScript解釋器,用來替代過去的UIWebView,需要的朋友可以參考下
    2016-04-04
  • 詳解Swift編程中的方法與屬性的概念

    詳解Swift編程中的方法與屬性的概念

    這篇文章主要介紹了Swift編程中的方法與屬性的概念,是Swift入門學習中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-11-11
  • Swift利用純代碼實現(xiàn)時鐘效果實例代碼

    Swift利用純代碼實現(xiàn)時鐘效果實例代碼

    這篇文章主要給大家介紹了關(guān)于Swift利用純代碼實現(xiàn)時鐘效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用swift具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-05-05
  • swift中正確安全聲明一個單例的方法實例

    swift中正確安全聲明一個單例的方法實例

    這篇文章主要給大家介紹了關(guān)于swift中如何正確安全聲明一個單例的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • 使用swift實現(xiàn)計算器功能

    使用swift實現(xiàn)計算器功能

    這篇文章主要為大家詳細介紹了使用swift實現(xiàn)計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Swift 3.0將UILabel數(shù)字顏色設(shè)置為紅色的方法

    Swift 3.0將UILabel數(shù)字顏色設(shè)置為紅色的方法

    這篇文章主要介紹了關(guān)于在Swift中將UILabel數(shù)字顏色設(shè)置為紅色的方法,文中給出了詳細的示例代碼,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • Swift如何優(yōu)雅的進行解包

    Swift如何優(yōu)雅的進行解包

    這篇文章主要介紹了Swift優(yōu)雅的進行解包,對swift感興趣的同學,可以參考下
    2021-04-04

最新評論

靖江市| 贡觉县| 维西| 青冈县| 陆川县| 桃源县| 光泽县| 上虞市| 明水县| 涿州市| 新龙县| 凉城县| 景谷| 胶州市| 巴彦县| 沧源| 孟州市| 南皮县| 临沭县| 湄潭县| 高清| 巴东县| 凯里市| 财经| 西丰县| 泉州市| 老河口市| 错那县| 墨江| 青海省| 红原县| 巴中市| 平乐县| 齐河县| 舒兰市| 宁晋县| 班玛县| 岗巴县| 邳州市| 区。| 波密县|