作为一个例子说我有以下代码,它接受一个字符串和一个UITextContentType。
var items: [Item] = [
TextField.init(
title: "First Name",
textContentType: UITextContentType.givenName
),
]
但我的应用程序面向iOS 10之前的版本,其中实现了UITextContentType。解决这个问题的最佳方法是什么?
Xcode修复 - 它要我@available
到封闭的var或类。但这意味着在以前的版本中我的应用程序会崩溃。
这里也是我设置textContentType的代码。
if #available(iOS 10.0, *) {
textField.textContentType = textContentType
}
所以基本上我想说的是,如果没有在iOS上传递任何内容,或者没有任何内容或类似内容。
如何在仍然以最干净的方式编写不重复的代码的同时实现这一目标?
答案 0 :(得分:0)
我实际上只是通过将代码更改为以下内容来解决此问题。
var items: [Item] = [
TextField.init(title: "First Name", textContentType: {() in
if #available(iOS 10.0, *) {
return UITextContentType.givenName
} else {
return nil
}
}()),
]
如果其他人有关于如何使这段代码变得更干净和更短的想法,那就太棒了。
答案 1 :(得分:0)
代替零,您可以使用:
if #available(iOS 10.0, *) {
return UITextContentType.givenName
} else {
return UITextContentType(rawValue: "")
}