我试图将一些属性附加到NSAttributeString并继续收到以下错误。
var finder = Application('Finder')
finder.finderWindows().map(function(w){w.close()})
finder.home.folders["Documents"].folders["Projects"].open()
finder.finderWindows[0].bounds = {"x":0, "y":0, "width":1920, "height":1000}
finder.finderWindows[0].currentView = 'list view'
我收到错误:
无法将'NSRange'(又名'_NSRange')类型的值转换为预期的参数类型'NSRangePointer'(又名'UnsafeMutablePointer< _NSRange>')
答案 0 :(得分:5)
attribute:atIndex:effectiveRange:
是 getter 方法 - 它不会设置/附加/添加属性,它会向您报告属性值在字符串中特定索引处的内容。因此,effectiveRange
参数是“out-pointer”:您传入指向NSRange
的指针,并且该方法在返回时填充该指针处的数据。在Swift中(以及NSAttributedString
扩展名内),您可以这样称呼它:
var range = NSRange()
let value = self.attribute(self.string, atIndex: 0, effectiveRange: &range)
但是,这不是你想要的。你似乎想要设置字符串上的属性,而不是获取的值现有属性。为此,请使用NSMutableAttributedString
和addAttribute:value:range:
方法,或者(特别是如果您将属性应用于整个字符串)NSAttributedString
的{{3}}构造函数。