为什么我使用Visual Format收到SIGABRT错误?

时间:2016-09-15 03:48:25

标签: ios swift3 visual-format-language

我正在使用一本关于如何在swift3中制作真实应用程序的书。我最近使用Visual Format收到错误。它使我的线间隔开,因为我有显示行号和我放的代码行没有在它附近的行号。然后,当我按下Run时,它给了我一个SIGABRT错误。为什么以及如何解决这个问题。它没有提到书中的任何错误。如果你想知道它是什么书,那就是:Paul Hudson" Hacking with Swift"。请帮助!

它给了我 Unterminated String literal 的错误。

这是我的代码:

view.addConstraints(
    NSLayoutConstraint.constraints(
        withVisualFormat:"V:|
            [label1(labelHeight@999)]-
            [label2(label1)]-
            [label3(label1)]-
            [label4(label1)]
            [label5(label1)]->=10-|",
        options: [],
        metrics: nil,
        views: viewsDictionary
    )
)

1 个答案:

答案 0 :(得分:1)

您尚未指定metrics字典,但您正尝试从中访问labelHeight

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse constraint format: 
Encountered metric with name "labelHeight", but value was not specified in metrics or views dictionaries 
V:|[label1(labelHeight@999)]-[label2(label1)]-[label3(label1)]-[label4(label1)][label5(label1)]->=10-| 
                      ^'

修改:根据rmaddy的建议,以下是修复方法:

let metrics = [
    "labelHeight": <#labelHeight#>,
]
view.addConstraints(NSLayoutConstraint.constraints(
    withVisualFormat:"V:|[label1(labelHeight@999)]-[label2(label1)]-[label3(label1)]-[label4(label1)][label5(label1)]->=10-|",
    options: [],
    metrics: metrics,
    views: viewsDictionary
))

注意:
1)为了便于阅读,样本修复在多行中被破坏 2)<#labelHeight#>将被复制到Xcode时转换为占位符。