我试图在Swift中调用NSLayoutManager对象的lineFragmentRectForGlyphAtIndex方法。它的描述是:
func lineFragmentRectForGlyphAtIndex(glyphIndex: Int, effectiveRange: CMutablePointer<NSRange>)
但我无法弄清楚我怎么称呼它。根据Apple文档,我必须这样称呼它:
let someRange : NSRange = ...
layoutManager.lineFragmentRectForGlyphAtIndex(0, effectiveRange: &someRange)
那是什么文件说的。但我收到一个错误:&#39; NSRange&#39;不是&#39; @lvalue $ T5&#39;
的子类型我该怎么办?
答案 0 :(得分:2)
尝试将其设为var
而不是let
:
var someRange: NSRange = ...
layoutManager.lineFragmentRectForGlyphAtIndex(0, effectiveRange: &someRange)
基本上:使用&
上的var
可以为您提供与CMutablePointer
兼容的内容,但let
不应该是可变的。因此类型错误。
如果要传递空指针,只需编写nil
而不是&someRange
(当然,您不需要声明额外的var
)。