Xcode在swift中给我一个错误

时间:2016-01-10 03:12:34

标签: ios xcode

我正在按照教程(http://youtube.com/watch?v=xvvsG9Cl4HA 19分20秒)并使他的代码看起来整洁,他把一些放在像这样的新线上

if let myPlacement = myPlacements?.first
        {

            let myAddress = "\(myPlacement.locality) \
            (myPlacement.country) \
            (myPlacement.postalCode)"
        }

。但是,当我尝试时,我得到一个错误

unterminated string literal

consecutive statements on a line must be seperated by a ';'

但教程中的人完全按照相同的方式完成了它。这是怎么回事? 我正在使用最新的swift和最新的xcode 7.2任何帮助都是apreciated

如果我把所有内容写在同一行上,就像这样

if let myPlacement = myPlacements?.first
        {

            let myAddress = "\(myPlacement.locality) \(myPlacement.country) \(myPlacement.postalCode)"
        }

虽然

但效果很好

2 个答案:

答案 0 :(得分:5)

  

如果我把所有内容写在同一行上,就像这样

嗯,有你的答案。您不能像在第一个示例中那样将字符串文字拆分为多行。有些语言允许这样做,但Swift不是其中之一。这不合法:

let s = "hello
there"

在第一行末尾放置的魔术行延续字符不会合法。

如果窗口比线窄,编辑器可以包裹线,以便显示;但是不能在字符串文字中放置实际的换行符。

如果你认为这样可以提高可读性,你可以通过组合(连接)多个字符串文字来解决这个问题。例如,这是合法的:

let myAddress = "\(myPlacement.locality) " + 
    "\(myPlacement.country) " + 
    "\(myPlacement.postalCode)"

答案 1 :(得分:1)

我仔细看你的视频教程。你在这里有误解。

enter image description here

你必须注意视频,这张图片中的代码不是断线,因为他在这里添加了一个返回,这是因为他的画面太窄了。

所以,真正的代码是

let myAddress = "\(myPlacement.locality) \(myPlacement.country) \(myPlacement.postalCode)"

请仔细观看。

您可能首先需要知道,\中的\(myPlacement.locality)是转义字符,它意味着获取myPlacement.locality的值并放入字符串中。