0

我正在使用一本关于如何在 swift3 中制作现实生活应用程序的书。我最近在使用 Visual Format 时遇到了一个错误。它分隔了我的行,因为我显示了行号,而我放置的代码行附近没有行号。然后,当我按下运行时,它给了我一个 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
    )
)
4

1 回答 1

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 时将被翻译为占位符。

于 2016-09-15T04:35:59.230 回答