类型NSAttributedString在tableView中没有下标成员

时间:2017-02-03 19:35:42

标签: ios swift

我有一个包含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)
                            }

2 个答案:

答案 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]并且它会给你你想要什么。