我正在使用一本关于如何在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
)
)
答案 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时转换为占位符。