使用 swift 3 从 plist 中读取长文本到特定格式

Read long paragraph of text from plist into a specific format with swift 3

我目前正在使用 swift 在 ios 上编写我的第一个应用程序 3. 我有一个 plist,其中包含不同信息的列表,每个信息都是一个长段落,其中贯穿了各个部分。对于每个部分,我想将标题的文本加粗,或者至少可以选择以某种方式设置格式,而不是只显示所有文本。我目前有一个简单的 table 视图,点击后会在文本视图中显示文本。我不知道如何将段落读入字符串,以及比较字符串的各个部分和特定文本的粗体。

例如,如果我有一个从 plist 中读取的字符串并表示:

"My name is @Bob and I like to @dance."

如何在不硬编码的情况下将“@​​Bob”更改为“Bob”并将“@dance”更改为“dance” ?

@IBOutlet var paragraphTextView: UITextView!
.
.
.

if let text = paragraph["Text"] {
        paragraphTextView.text = text
}

最简单的解决方案是在 plist 文件的文本中使用一些 HTML 标记。

而不是纯文本:

My name is @Bob and I like to @dance.

使用:

My name is <b>Bob</b> and I like to <b>dance</b>.

这为您提供了更大的灵活性。您只需根据需要使用适当的 <b></b><u></u><i></i> 标记即可添加粗体、下划线和斜体。它还允许您标记比单个单词更通用的范围。

文本具有正确的标记后,您可以从标记的字符串创建一个 NSAttributedString,然后将其设置为文本视图sattributedTextproperty instead of using thetext` 属性.

有关如何从 HTML 文本创建 NSAttributedString 的很好示例,请参阅