我试图克服这里解释的关于无法直接连接IB elements
到插座的限制protocol types
。
提到的解决方法并不理想,因为我需要Outlet Collection
一个新元素并连接一个新元素意味着一次又一次地重做,这违背了我项目这一部分的目的。
所以我想我会创建一个中间控制器,其唯一目的是轻松地将AnyObject
插座集合转换为使用 my Protocol
.
我发现您在下面看到的数组转换会引发错误:“类型' FormField
'不符合协议' AnyObject
'”
但是,注释掉的简单的每项循环实际上是有效的。
我想了解为什么前者会失败,以及是否有办法真正避免每个项目的循环。
class FormViewController: UIViewController, Form {
@IBOutlet var fieldCollection: [AnyObject]!
var formFields: [FormField]!
override func viewDidLoad() {
super.viewDidLoad()
self.formFields = self.fieldCollection as! [FormField]!
/*
self.formFields = [FormField]()
for field in self.fieldCollection {
self.formFields.append(field as! FormField)
}*/
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}