使用swift 3将plist中的长段文本读取为特定格式

Posted

技术标签:

【中文标题】使用swift 3将plist中的长段文本读取为特定格式【英文标题】:Read long paragraph of text from plist into a specific format with swift 3 【发布时间】:2017-05-07 16:45:53 【问题描述】:

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

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

“我的名字是@Bob,我喜欢@dance。”

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

@IBOutlet var paragraphTextView: UITextView!
.
.
.

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

【问题讨论】:

抱歉,您只能通过 AttributedString developer.apple.com/reference/uikit/uitextfield#1968630 执行此操作 这可能是一个起点:***.com/questions/43557044/… 【参考方案1】:

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

而不是纯文本:

我的名字是@Bob,我喜欢@dance。

用途:

我的名字是Bob,我喜欢跳舞

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

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

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

【讨论】:

感谢您的快速回复。我会试试这个,但我毫不怀疑它会起作用。我一直在寻找这样的东西,但我想不确定它是否可能。 编辑:它完全按计划工作。非常感谢! 你是如何让 在一个已经是 XML 的 plist 中工作的?我收到此错误消息;错误:无法将输入文件作为属性列表读取:操作无法完成。 (XCBUtil.PropertyListConversionError 错误 1。) @user3561494 你将<转义为<,就像任何普通的XML一样。

以上是关于使用swift 3将plist中的长段文本读取为特定格式的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3:无法将数据写入 plist 文件

从 swift 2 中的 plist 读取时无法创建 NSDictionary

如何使用UITextAlignment将UITableViewCell中的文本与Swift中的左右对齐

Swift 中的 Array 扩展以使用 NSPropertyListReadOptions 从 plist 中读取数组

swift 3.1 从 web 读取 CSV 或 PLIST 文件

如何将此 .plist 文件直接解析为 Swift 中的对象?