Ios 枚举视图';Swift中的NSLayoutConstraints?

Ios 枚举视图';Swift中的NSLayoutConstraints?,ios,swift,nslayoutconstraint,Ios,Swift,Nslayoutconstraint,在Objective-C中,我可以列举视图的约束,并相应地调整约束,但在Swift中,我很难找到等效的方法 以下是我在swift中应用代码的尝试: [self.view.constraints enumerateObjectsUsingBlock:^(NSLayoutConstraint *constraint, NSUInteger idx, BOOL *stop) { if ((constraint.firstItem == view) && (cons

在Objective-C中,我可以列举视图的约束,并相应地调整约束,但在Swift中,我很难找到等效的方法

以下是我在swift中应用代码的尝试:

   [self.view.constraints enumerateObjectsUsingBlock:^(NSLayoutConstraint *constraint, NSUInteger idx, BOOL *stop) {
        if ((constraint.firstItem == view) && (constraint.firstAttribute == NSLayoutAttributeTop)) {
            constraint.constant = -200;
        }
    }];
我得到一个编译器错误,在代码的第一行声明“Type'[AnyObject!'不符合协议'Sequence'

任何帮助都将不胜感激。

因为
constraints()
返回
[AnyObject]!
这是可选的,所以您需要在使用之前展开
查看.constraints()!
。所以请使用下面的代码展开它

   for (index, value) in enumerate(view.constraints()) {
        var constraint = value as NSLayoutConstraint
        if value.firstItem? = view  {
            constraint.constant = -200;
        }

    }
另外,您不能分配
firstItem
,因为它是只读属性。我认为您需要比较它。因此,请使用
if value.firstItem!作为UIView==self.view
。因此,请使用`

    for (index, value) in enumerate(view.constraints()!) {
        var constraint = value as NSLayoutConstraint
        if value.firstItem? = view  {
            constraint.constant = -200;
        }

    }

您在哪一行收到此错误?@reecon枚举(view.constraints())中(index,value)的第一行-
{
感谢您的响应,在您的代码中我收到此编译器错误“无法分配到此表达式的结果”“在
if value.firstItem?=view一行中,我想您应该使用comparison`if value.firstItem!作为UIView==self.view`
 for (index, value) in enumerate(view.constraints()!) {
        var constraint = value as NSLayoutConstraint
        if value.firstItem! as UIView == self.view {
            constraint.constant = -200;
        }

    }