Translate NSRangePointer from Objective-C to Swift
将一些Objective-C代码转换为Swift时出现错误。
我正在使用
Objective-C:
1 2 3 4 5 | NSRange range; id value = [self.textanalyze attribute:attribute atIndex:index effectiveRange:&range] |
快捷键:
1 2 3 4 | var range : NSRange? var value : Any = self.textanalyze.attribute(attributes, atIndex: index, effectiveRange: &range) |
在
您需要解开范围。
此外,您需要初始化范围。否则,这将使您的程序崩溃。
1 2 | var range : NSRange? = NSMakeRange(0, 1) self.textanalyze.attribute(attributes, atIndex: index, effectiveRange: &range!) |
或者,如果您不想打开范围(可能为nil),请重写函数,如下所示:
1 2 3 4 5 6 | var range : NSRange? doSomethingWithRangePointer(&range) func doSomethingWithRangePointer(range : UnsafeMutablePointer<NSRange?>) { // Do stuff } |
但是您可能不需要首先将范围设为可选(想想,
1 | var range = NSMakeRange(0, 1) |
1 2 3 4 | let a = sizeof(NSRange) let objRangePtr:NSRangePointer = NSRangePointer.alloc(a) //alloc memory objLayoutManager.characterRangeForGlyphRange(range, actualGlyphRange:objRangePtr) let objRange = objRangePtr.move() //gain the value and dealloc() |