Swift3遷移至Swift4可能遇到的問(wèn)題小結(jié)
前言
WWDC 2017 帶來(lái)了很多驚喜。Swift 4 也伴隨著 Xcode 9 測(cè)試版來(lái)到了我們的面前,很多強(qiáng)大的新特性非常值得我們期待在正式項(xiàng)目中去使用它。本文將給大家詳細(xì)介紹關(guān)于Swift3遷移至Swift4遇到的問(wèn)題,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧
問(wèn)題如下:
1.The use of Swift 3 @objc inference in Swift 4 mode is deprecated.警告
選擇Target->Build Settings,搜索Swift3,在Swift3 @objc Inference中,把On改為Off或者Defalut。
2.String的subString方法廢棄
在Swift3中我們想要截取字符串的話,一般是用的是:
var ctime = "2017-09-28 12:11:32.43234" ctime = ctime.substring(to: ctime.index(ctime.startIndex, offsetBy: 19))
不得不說(shuō)這段語(yǔ)句剛開(kāi)始寫的時(shí)候多么的蛋疼。。。不僅難以理解,而且在Xcode8里面敲的時(shí)候,莫名的就會(huì)全部代碼高亮消失,然后提示Report Bug。
終于在Swift4中對(duì)其進(jìn)行了修改,雖然個(gè)人感覺(jué)還是有點(diǎn)奇怪~,但是起碼好用多了??!
var ctime = "2017-09-28 12:11:32.43234" let endIndex = ctime.index(ctime.startIndex, offsetBy: 19) ctime = String(ctime[ctime.startIndex ..< endIndex])
但是注意SubString使用的是原來(lái)string的內(nèi)存。官方建議是短時(shí)間使用,如果想要長(zhǎng)時(shí)間保持,需要轉(zhuǎn)為String。
為了使用起來(lái)更方便,我們可以寫一個(gè)Extension來(lái)擴(kuò)展Sting:
extension String { subscript (start: Int, end: Int) -> String? { if start > count || start < 0 || start > end { return nil } let begin = self.index(self.startIndex, offsetBy: start) var terminal: Index if end >= count { terminal = self.index(self.startIndex, offsetBy: count) } else { terminal = self.index(self.startIndex, offsetBy: end) } let str = self[begin ..< terminal] return String(str) } }
3.某些第三方庫(kù)未適配Swift4處理辦法
- 從Profile里移除該庫(kù)
- pod update 或 pod install
- 檢查Target->Build Settings->Linking->Other Linker Flags中,是否移除了相應(yīng)的framework
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)我們的支持。
上一篇:Swift如何在應(yīng)用中添加圖標(biāo)更換功能的方法
欄 目:Swift
下一篇:Swift如何調(diào)用Objective-C的可變參數(shù)函數(shù)詳解
本文標(biāo)題:Swift3遷移至Swift4可能遇到的問(wèn)題小結(jié)
本文地址:http://mengdiqiu.com.cn/a1/Swift/11949.html
您可能感興趣的文章


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-11Swift利用Decodable解析JSON的一個(gè)小問(wèn)題
- 01-11swift中defer幾個(gè)簡(jiǎn)單的使用場(chǎng)景詳解
- 01-11Swift中初始化init的方法小結(jié)
- 01-11Swift中defer關(guān)鍵字推遲執(zhí)行示例詳解
- 01-11Swift利用純代碼實(shí)現(xiàn)時(shí)鐘效果實(shí)例代碼
- 01-11Swift中定義單例的方法實(shí)例
- 01-11Swift中排序算法的簡(jiǎn)單取舍詳解
- 01-11Swift Json實(shí)例詳細(xì)解析
- 01-11Swift如何為設(shè)置中心添加常用功能
- 01-11Swift利用指紋識(shí)別或面部識(shí)別為應(yīng)用添
隨機(jī)閱讀
- 04-02jquery與jsp,用jquery
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-11Mac OSX 打開(kāi)原生自帶讀寫NTFS功能(圖文
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改