Ios 绑定必须具有可选类型Swift 3错误

Ios 绑定必须具有可选类型Swift 3错误,ios,swift,xcode,Ios,Swift,Xcode,我很感兴趣为什么会出现这个错误: 条件绑定的初始值设定项必须具有可选类型,而不是[String] 这是我的密码: class MainVC: UIViewController { @IBOutlet weak var typesField: IQDropDownTextField! override func viewDidLoad() { super.viewDidLoad() let elements: Array<String?&g

我很感兴趣为什么会出现这个错误:

条件绑定的初始值设定项必须具有可选类型,而不是[String]

这是我的密码:

class MainVC: UIViewController {
    @IBOutlet weak var typesField: IQDropDownTextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        let elements: Array<String?> = ["Electronics", "Cars", "Toys"]
        typesField.isOptionalDropDown = false
        typesField.itemList = (elements as? [String])!    
    }

    @IBAction func savePressed(_ sender: UIButton) {
        var item: Item!

        if let types = typesField.itemListUI {
            item.type = types
        }
    }
}
class MainVC:UIViewController{
@IBOutlet弱var类型字段:IQDropDownTextField!
重写func viewDidLoad(){
super.viewDidLoad()
let元素:数组=[“电子”、“汽车”、“玩具”]
typesField.isOptionalDropDown=false
typesField.itemList=(元素为?[String])!
}
@iAction func savePressed(uSender:ui按钮){
var项目:项目!

如果let types=typesField.itemListUI{ item.type=类型 } } }
条件绑定的初始值设定项必须具有可选类型,而不是[String]

表示表达式的右侧(
typesField.itemListUI
)不是可选的,不需要可选绑定

所以相反

if let types = typesField.itemListUI {
   item.type = types
}
只要写

item.type = typesField.itemListUI

没有
如果let
,没有额外的局部变量。

哪一行实际导致了错误?如果let types=typesField.itemListUI{->当您使用
如果let
时,右侧必须是可选的(可能有值,也可能没有值)。有关更多信息,请参见。非可选项可能永远不会是
nil
,因此它肯定有一个值;在您的情况下,该值是
string
,而不是
string?
。您可以将该行写为
types=typesField.itemListUI
,如果let,则不使用
。您的意思是
let types=typesField.itemListUI
,因为t首先,我必须创建变量
types
您可以跳过该行,直接执行:
item.type=typesField.itemListUI
我收到此错误-无法将类型“[String]”的值分配给类型“String?”
item。type
声明为(single)
String
不是
String
[String]
)的数组。您必须在设计中解决此问题。