举个例子,我有以下代码,它接受一个字符串和一个 UITextContentType。
var items: [Item] = [
TextField.init(
title: "First Name",
textContentType: UITextContentType.givenName
),
]
但我的应用程序针对的是实现了 UITextContentType 的 iOS 10 之前的版本。处理这个问题的最佳方法是什么?
Xcode 修复它希望我 @available
到封闭的 var 或类。但这意味着在以前的版本中我的应用程序会崩溃。
这也是我设置 textContentType 的代码。
if #available(iOS 10.0, *) {
textField.textContentType = textContentType
}
所以基本上我想说的是,如果它不在 iOS 上,则不要传递任何内容,或者 nil 或类似的内容。
如何才能实现这一目标,同时仍然以尽可能最简洁的方式编写不重复的代码?
最佳答案
我实际上只是通过将代码更改为以下内容来解决这个问题。
var items: [Item] = [
TextField.init(title: "First Name", textContentType: {() in
if #available(iOS 10.0, *) {
return UITextContentType.givenName
} else {
return nil
}
}()),
]
如果其他人有关于如何使代码更简洁、更短的想法,那就太棒了。
关于ios - 在旧版 iOS 版本上快速传递属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46677982/