Kub*_*bba 5 nsattributedstring swift
我正在尝试从属性字符串中获取属性。除非字符串为空,否则一切正常。看一看:
let s = NSAttributedString(string: "", attributes: [NSForegroundColorAttributeName: UIColor.red])
let range = NSMakeRange(0, s.length)
let attrs = s.attributes(at: 0, longestEffectiveRange: nil, in: range)
Run Code Online (Sandbox Code Playgroud)
为什么我在最后一行出现越界异常?
这是预期的结果。如果字符串的长度为 0("" 的情况),则它在索引 0 处没有字符,因此当您尝试使用 s.attributes 访问它时,预计会出现越界异常。
因为索引是从 0 开始的,所以 index=0 只存在于 String.length>0 的情况。
您可以通过使用长度为 1 的字符串并将 1 输入到 s.attributes 来轻松检查这一点。
let s = NSAttributedString(string: "a", attributes: [NSForegroundColorAttributeName: UIColor.red])
let range = NSMakeRange(0, s.length)
let attrs = s.attributes(at: 1, longestEffectiveRange: nil, in: range) //also produces out of bounds error
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1684 次 |
| 最近记录: |