2014-06-29 162 views
2

以下代码会导致编译器错误:Could not find member 'Left'Swift:强制关闭参数?

let indexOfConstraint = constraints.indexOfObjectPassingTest { (constraint, idx, stop) in 
    return constraint.firstAttribute == .Left 
} 

前面加上NSLayoutAttribute之前.Left修复的错误,但有没有办法投constraintNSLayoutConstraint

例如,在Objective-C中,我可以在指定参数时投出constraint

NSUInteger indexOfConstraint = [constraints indexOfObjectPassingTest:^BOOL(NSLayoutConstraint *constraint, NSUInteger idx, BOOL *stop) { 
    return constraint.firstAttribute == NSLayoutAttributeLeft 
}]; 
+1

你尝试'(作为约束NSLayoutConstraint).firstAttribute'丑陋? – Oxcug

+0

是的,我想这是最好的选择。我意识到在问这个问题后工作。 – ma11hew28

回答

5

您可以使用括号投:

let indexOfConstraint = constraints.indexOfObjectPassingTest { (constraint, idx, stop) in 
    return (constraint as NSLayoutConstraint).firstAttribute == .Left 
} 

...这无疑比只用NSLayoutAttribute.Left

+0

是的,我想我会坚持后者。谢谢! :-) – ma11hew28