不能将 nil 传递给两个可选参数

Can't pass nil to two optional parameters

我正在将 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,但不能为两者都传递。为什么我不能为两个可选参数都传递 nil?

我得到的错误似乎是非特定的,与有问题的行无关,

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

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