如何在 swift 中为每个循环附加字符串



我想解析 json 字符串并在 UITextView 中显示的内容。 我正在获取带有键和值的 HTML 字符串的数据。这是来自服务器的以下示例字符串响应,

{"":"<strong>Adidas</strong><br>Enjoy 10% off","Period":"10 Oct 2019 - 11 Nov 2019","Description":"<p>Enjoy 30% off 
"Terms & Conditons":"<ol>n<li>It's available only in peak hours</li>n}

我需要用 HTML 显示以下格式,

Expected output: 
Adidas
Enjoy 10% off
Period:
10 Oct 2019 - 11 Nov 2019
Description:
Enjoy 30% off.
Terms & Conditons:
It's available only in peak hours

我使用字典并提取了数据,但问题是数据的顺序不按顺序排列。

func setupData(responseString : String)
{
// Convert string to dictionary for extracting the keys and values
// Need to maintain the order while adding the data
let content = convertToDictionary(text: responseString)
var text : String = ""
if let contentDataDict = content
{
for (key, value) in  contentDataDict
{
// want to append the key and values in the sequence order
textView.attributedText = text.htmlToAttributedString
}
}
} 

如何根据预期输出解析和显示数据。

Devan,你认为字典不起作用是对的。 你最好将html加载到一个数组中。 我使用伪代码来表示一个新的convertToArray来替换您的convertToDictionary,因为您没有提供所有原始代码

struct Component {
field: String
value: String
}
func convertToArray(response: String) -> [Component] [
let components = [Component]()
for entries in response {
//extract key/value pairs from html as before
//then create a component struct with them and add it to the array
components.append(Component(field: key, value: value)
}
return components //now a sequence of structs represent your data in order
}

func setupData(responseString : String) {
let components: [Component] = convertToArray(text: responseString)
for component in components {
//add component.field and component.value to your attributed text string
//and then display as before
}
}

最新更新