Swift中的自动布局:'String'与'NSObject'不同

Jim*_*ery 2 autolayout swift

我正在关注此页面上的教程:

http://makeapppie.com/2014/07/26/the-swift-swift-tutorial-how-to-use-uiviews-with-auto-layout-programmatically/

我在代码中达到了这一点:

let dict = ["list":list]
let lcH = NSLayoutConstraint.constraintsWithVisualFormat("H:[list(100)]", options: NSLayoutFormatOptions(0), metrics: nil, views: dict)
Run Code Online (Sandbox Code Playgroud)

最后一行产生了这个错误(箭头指向dict):

'String' is not identical to 'NSObject'
Run Code Online (Sandbox Code Playgroud)

我最初试图将本教程中Objective C代码转换为Swift,我在同一个地方得到了完全相同的错误.那时我认为这是我错误地转换代码的结果,但现在我正在遵循这个Swift教程并得到完全相同的结果.

谁能让我知道我做错了什么?

vac*_*ama 5

option点击dict.这将告诉你Swift推断它的类型.我猜它是[String: UIView?].字典中的值不能是选项,因此您需要list在创建时解包dict:

let dict = ["list":list!]
Run Code Online (Sandbox Code Playgroud)

  • `NSLayoutConstraint.constraintsWithVisualFormat()`返回一组约束.它的类型是`[AnyObject]` - `AnyObject`数组.你需要调用`addConstraints`而不是`addConstraint`.它返回约束数组的原因是可视化格式可以并且经常导致创建多个约束. (3认同)