Swift3遷移至Swift4可能遇到的問題小結(jié)
前言
WWDC 2017 帶來了很多驚喜。Swift 4 也伴隨著 Xcode 9 測試版來到了我們的面前,很多強(qiáng)大的新特性非常值得我們期待在正式項(xiàng)目中去使用它。本文將給大家詳細(xì)介紹關(guān)于Swift3遷移至Swift4遇到的問題,下面話不多說了,來一起看看詳細(xì)的介紹吧
問題如下:
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))
不得不說這段語句剛開始寫的時(shí)候多么的蛋疼。。。不僅難以理解,而且在Xcode8里面敲的時(shí)候,莫名的就會(huì)全部代碼高亮消失,然后提示Report Bug。
終于在Swift4中對(duì)其進(jìn)行了修改,雖然個(gè)人感覺還是有點(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使用的是原來string的內(nèi)存。官方建議是短時(shí)間使用,如果想要長時(shí)間保持,需要轉(zhuǎn)為String。
為了使用起來更方便,我們可以寫一個(gè)Extension來擴(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.某些第三方庫未適配Swift4處理辦法
- 從Profile里移除該庫
- pod update 或 pod install
- 檢查Target->Build Settings->Linking->Other Linker Flags中,是否移除了相應(yīng)的framework
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
如何在Swift?中使用?async?let?并發(fā)運(yùn)行后臺(tái)任務(wù)
Swift?異步編程是一種編寫允許某些任務(wù)并發(fā)運(yùn)行而不是按順序運(yùn)行的代碼的方法,這篇文章主要介紹了在Swift中使用async?let并發(fā)運(yùn)行后臺(tái)任務(wù),需要的朋友可以參考下2023-06-06如何利用SwiftUI實(shí)現(xiàn)可縮放的圖片預(yù)覽器
這篇文章主要給大家介紹了關(guān)于如何利用SwiftUI實(shí)現(xiàn)可縮放圖片預(yù)覽器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用SwiftUI具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-09-09swift中defer的實(shí)際應(yīng)用小結(jié)
這篇文章主要給大家介紹了關(guān)于swift中defer的實(shí)際應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01EvenLoop模型在iOS的RunLoop應(yīng)用示例
這篇文章主要為大家介紹了EvenLoop模型在iOS的RunLoop應(yīng)用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07