我收到错误"表达类型不明确没有更多上下文"
这是我的代码
@IBOutlet var customerDashboardButtons:[NSArray]?
var predicate = NSPredicate(format: "SELF.tag == %d", tag)
var filteredButtons = customerDashboardButtons!.filter { predicate.evaluateWithObject($0) };
if 0 < filteredButtons.count {
var button = customerDashboardButtons!.first
button.hidden = true // getting an error in this line as "Type of expression is ambiguous without more context
}
我尝试了以下内容,
var button:UIButton = customerDashboardButtons!.first //Error "NSArray? is not convertible to UIButton"
var button = customerDashboardButtons!.first as UIButton //Error "NSArray? is not convertible to UIButton"
对此有任何帮助表示赞赏。
答案 0 :(得分:7)
@IBOutlet var customerDashboardButtons:[NSArray]?
创建一个数组数组
调用customerDashboardButtons!.first
将返回数组中的第一个数组(NSArray
)([…]
也将创建一个数组)
我怀疑您希望customerDashboardButtons
成为UIButton
的数组,以便您使用
@IBOutlet var customerDashboardButtons:[UIButton]?
在这里使用customerDashboardButtons!.first
将为您提供UIButton
。由于数组的类型为UIButton
,因此您不必将button
声明为UIButton。
var button = customerDashboardButtons!.first
如果更改阵列,则可以正常工作。
答案 1 :(得分:0)
以下是如何创建IBOutletCollection并从中获取项目的示例
1) @IBOutlet var simpleTextField: [UITextField]!
2)从中获取textFiled的示例。
for index in 0...(simpleTextField.count - 1) {
let textField : UITextField = simpleTextField[index]
textField.isUserInteractionEnabled = true
}