无法将nil传递给两个可选参数

时间:2015-04-23 01:09:54

标签: function swift null

我正在将Objective-C类别转换为Swift扩展,以提供添加约束的简化方法。用于等间距视图的一种方法具有以下签名,

func addAndEquallySpaceViews(views: [UIView], leftOrTopSpace: CGFloat?, rightOrBottomSpace: CGFloat?, options: NSLayoutFormatOptions?)

我这样称呼,

self.view.addAndEquallySpaceViews([view1, view2], leftOrTopSpace: nil, rightOrBottomSpace: nil, options: .AlignAllBottom)

我希望能够将nil传递给leftOrTopSpace和rightOrBottomSpace参数,但是当我为它们传递nil时,我得到一系列编译时错误。我可以单独为他们中的任何一个传递零,但两者都不能。为什么我不能为两个可选参数传递nil?

我遇到的错误似乎是非特定的,与相关行无关,

enter image description here

1 个答案:

答案 0 :(得分:2)

这不是零CGFloats。这是隐式枚举类型。这是你的解决方法:

self.view.addAndEquallySpaceViews([view1, view2], 
    leftOrTopSpace: nil, rightOrBottomSpace: nil, 
    options: NSLayoutFormatOptions.AlignAllBottom)