2017-10-11 18 views
0

舉個例子,我有以下代碼需要一個字符串和一個UITextContentType。舊iOS版本中的Swift通過屬性

var items: [Item] = [ 
    TextField.init(
     title: "First Name", 
     textContentType: UITextContentType.givenName 
    ), 
] 

但我的應用程序的目標是iOS 10之前的版本,其中實現了UITextContentType。處理這個問題的最佳方法是什麼?

Xcode修復 - 它要我把@available封閉的var或class。但這意味着在以前的版本中我的應用程序會崩潰。

另外這裏是我的代碼,我設置textContentType。

if #available(iOS 10.0, *) { 
    textField.textContentType = textContentType 
} 

所以基本上我想說,如果它不是在iOS上通過任何東西,或零或沿着這些線的東西。

我該如何實現這一點,同時仍然編寫不重複一噸且代碼最簡潔的代碼?

回答

0

我實際上只是能夠通過將代碼更改爲以下來解決此問題。

var items: [Item] = [ 
    TextField.init(title: "First Name", textContentType: {() in 
     if #available(iOS 10.0, *) { 
      return UITextContentType.givenName 
     } else { 
      return nil 
     } 
    }()), 
] 

如果其他人有想法如何使這段代碼更乾淨和更短,那將是非常棒的。

0

在地方的零,您可以使用:

if #available(iOS 10.0, *) { 
    return UITextContentType.givenName 
} else { 
    return UITextContentType(rawValue: "") 
} 
+0

什麼是VS零到這樣的好處? –