gpt4 book ai didi

ios - 带有 Range 的 Swift 1.2 NSTextStorage removeAttribute

转载 作者:可可西里 更新时间:2023-11-01 01:06:08 26 4
gpt4 key购买 nike

我有一个 NSTextStorage 的子类我正在尝试通过以下方式删除段落的前景色:

var paragraphRange = self.string.paragraphRangeForRange(
advance(self.string.startIndex, theRange.location)..advance(self.string.startIndex, theRange.location + theRange.length))

self.removeAttribute(NSForegroundColorAttributeName, range: paragraphRange)

但是,我收到以下错误 Cannot invoke 'removeAttribute' with an argument list of type '(String, range: (Range<String.Index>))'

请帮忙。我认为 Swift 上的 TextKit 是一团糟。一些方法接收/返回 NSRange但 String 适用于 Range<String.Index>让人难以忍受。

最佳答案

这里的问题是 NSStringself.string 返回自动桥接到 Swift String .一个可能的解决方案是将其转换回 NSString明确地:

func removeColorForRange(theRange : NSRange) {
let paragraphRange = (self.string as NSString).paragraphRangeForRange(theRange)
self.removeAttribute(NSForegroundColorAttributeName, range: paragraphRange)
}

另请注意,范围运算符 ..已被 ..< 取代在较新的 Swift 版本中(避免与 ... 混淆并强调不包括上限)。

关于ios - 带有 Range<String.Index> 的 Swift 1.2 NSTextStorage removeAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29586312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com