国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Swift > 正文

Swift3遷移至Swift4可能遇到的問題小結

2020-03-09 17:31:53
字體:
來源:轉載
供稿:網友

前言

WWDC 2017 帶來了很多驚喜。Swift 4 也伴隨著 Xcode 9 測試版來到了我們的面前,很多強大的新特性非常值得我們期待在正式項目中去使用它。本文將給大家詳細介紹關于Swift3遷移至Swift4遇到的問題,下面話不多說了,來一起看看詳細的介紹吧

問題如下:

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)) 

不得不說這段語句剛開始寫的時候多么的蛋疼。。。不僅難以理解,而且在Xcode8里面敲的時候,莫名的就會全部代碼高亮消失,然后提示Report Bug。

終于在Swift4中對其進行了修改,雖然個人感覺還是有點奇怪~,但是起碼好用多了!!

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的內存。官方建議是短時間使用,如果想要長時間保持,需要轉為String。

為了使用起來更方便,我們可以寫一個Extension來擴展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中,是否移除了相應的framework

總結

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


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉木萨尔县| 武乡县| 四子王旗| 五家渠市| 津南区| 嘉定区| 鄂托克旗| 金山区| 个旧市| 勃利县| 昔阳县| 海原县| 贡山| 伽师县| 屏山县| 红安县| 荣昌县| 岐山县| 洪江市| 宁都县| 河东区| 鹿邑县| 读书| 中山市| 中阳县| 郯城县| 台江县| 台南县| 庆元县| 纳雍县| 淄博市| 明光市| 南汇区| 宜君县| 丰城市| 措勤县| 元氏县| 广平县| 庆云县| 阜城县| 富蕴县|