NSAttributedString 类型在 tableView 中没有下标成员
Posted
技术标签:
【中文标题】NSAttributedString 类型在 tableView 中没有下标成员【英文标题】:Type NSAttributedString has no subscript members in tableView 【发布时间】:2017-02-03 19:35:41 【问题描述】:我有一个带有 X 项的 AttributedString 数组和一个将显示该数组的 tableView,并且对于数组中的每个项,表中都会有一个 Section。 在“cellForRowAt”函数中,如果我这样做 "let text = arrayTexts[indexPath.section][indexPath.row]",出现错误'Type NSAttributedString has no subscript members'。 我能做什么?
声明: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)
【问题讨论】:
展示你如何声明和填充arrayTexts
。
声明:var arrayTexts = [NSAttributedString]()。每个项目都是来自数据库的字符串,我使用“try NSMutableAttributedString (data : , options : , documentAttributes : )”将其转换为属性字符串并附加到 arrayTexts
您的语法假定数组(行)位于数组(部分)[[<Type>]]
。
@vadian 是的,我尝试不使用 [indexPath.section] 并显示正确数量的部分,但所有部分中的文本都相同
【参考方案1】:
问题是你的let text = arrayTexts[indexPath.section][indexPath.row]
只有在你有一个 NSAttributedStrings 数组 ([[NSAttributedString]]
) 的数组时才能工作。所以arrayTexts[indexPath.section]
会返回一个NSAttributedString,所以尝试用[indexPath.row]
下标会失败。如果不查看更多代码,很难准确理解您要做什么,但从您的描述看来,您只需将代码更改为 let text = arrayTexts[indexPath.section]
,它就会为您提供所需的内容。
【讨论】:
【参考方案2】:需要声明数据源数组
var arrayTexts = [[NSAttributedString]]()
并填充数组
self.arrayTexts.append([str])
这将为每个项目创建一个部分。
【讨论】:
非常感谢您的帮助!我使用了我得到的另一个答案,但是通过您的答案,我学会了在单元格中使用更好的数组。非常感谢!以上是关于NSAttributedString 类型在 tableView 中没有下标成员的主要内容,如果未能解决你的问题,请参考以下文章
Swift 4.2 类型“NSAttributedString.Key”没有成员“accessibilitySpeechPitch”
无法使用类型为 [重复] 的参数列表调用类型“NSAttributedString”的初始化程序
无法将 NSAttributedString.DocumentAttributeKey 类型的值转换为 .DocumentReadingOptionKey
Swift 4 - 如何在核心数据中保存 NSAttributedstring
将 NSAttributedString 添加到 CloudKit
NSAttributedString可以强制转换为NSMutableAttributedString类型吗?下面这代码有什么问题 为什么报错