Swift 文字和字符串换行符之间的快速差异

Swift 文字和字符串换行符之间的快速差异,swift,xml,Swift,Xml,我有一个用于iOS的Swift应用程序,其中从XMLParser继承来解析XML文件。在一节中,我获取了一个可能包含\n字符的属性。这些字符串稍后用作按钮标题 示例XML: <button title="TitleLine1\nTitleLine2"/> 正如我所期望的那样,这会获取标题,但是稍后当我创建按钮并应用标题时,换行符只是直接打印在按钮上的行中,而不是使按钮标题变为两行 我希望按钮看起来像这样: TitleLine1 TitleLine2 但结果是: TitleLine

我有一个用于iOS的Swift应用程序,其中从XMLParser继承来解析XML文件。在一节中,我获取了一个可能包含
\n
字符的属性。这些字符串稍后用作按钮标题

示例XML:

<button title="TitleLine1\nTitleLine2"/>
正如我所期望的那样,这会获取标题,但是稍后当我创建按钮并应用标题时,换行符只是直接打印在按钮上的行中,而不是使按钮标题变为两行

我希望按钮看起来像这样:

TitleLine1
TitleLine2
但结果是:

TitleLine1\nTitleLine2
如果我完全忘记了XML解析,而只是用如下文字字符串硬编码按钮标题,那么换行符会起作用:

button.setTitle("TitleLine1\nTitleLine2", for: .normal)
但是,使用my变量设置它会导致换行符按行打印:

button.setTitle(buttonTitle, for: .normal)

XMLParser处理字符串的方式是否不同?如果我简单地使用XML解析字符串和文本字符串执行
print()
,我会注意到相同的行为。

Swift字符串中的
\n
文本在编译期间转换为实际的换行符

在运行时获得的某段文本中,字符
\
后跟字符
n
,没有任何特殊意义

你有几个选择。解析XML时,可以处理所有字符串并用实际换行符替换出现的字符序列
\n

let str = someXMLValue.replacingOccurrences(of: "\\n", with: "\n")
另一个选项是更改XML结构,将元素用作标题,而不是属性。然后,您可以在标题中添加真正的换行符:

<button>
    <title>TitleLine1
TitleLine2</title>
</button>

标题线1
标题线2
然后,您的Swift代码不需要做任何特殊的处理换行符

<button>
    <title>TitleLine1
TitleLine2</title>
</button>