我有一个包含X项的AttributedString数组和一个将显示此数组的tableView,对于数组中的每个项,表中都会有一个Section。 在“cellForRowAt”函数中,如果我这样做 “let text = arrayTexts [indexPath.section] [indexPath.row]”,出现错误'Type NSAttributedString没有下标成员'。 我该怎么办?
声明:var arrayTexts = [NSAttributedString]()
填充:
let html = json["data"][order]["informations"][textIndex]["text"].stringValue
let textHtml = html.unescapingFromHTML
do {
let str = try NSMutableAttributedString(data: textHtml.data(using: String.Encoding.unicode, allowLossyConversion: true)!, options: [NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType], documentAttributes: nil)
let fullRange : NSRange = NSMakeRange(0, str.length)
str.addAttributes([NSFontAttributeName: UIFont(name: "Helvetica Neue", size: 17.0)!], range: fullRange )
self.arrayTexts.append(str)
self.tableView.reloadData()
} catch {
print(error)
}
答案 0 :(得分:1)
您需要声明数据源数组
var arrayTexts = [[NSAttributedString]]()
并填充数组
self.arrayTexts.append([str])
为每个项目创建一个部分。
答案 1 :(得分:1)
问题是,只有在您拥有NSAttributedStrings(let text = arrayTexts[indexPath.section][indexPath.row]
)数组的数组时,您的[[NSAttributedString]]
才有效。因此arrayTexts[indexPath.section]
将返回单个NSAttributedString,因此尝试使用[indexPath.row]
下标将失败。如果没有看到更多代码,很难准确理解你要做的事情,但从你的描述来看,你可以将代码更改为let text = arrayTexts[indexPath.section]
并且它会给你你想要什么。