Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法转换类型为';恩斯兰格';到预期的参数类型';NSRangePointer';敏捷的_Ios_Swift - Fatal编程技术网

Ios 无法转换类型为';恩斯兰格';到预期的参数类型';NSRangePointer';敏捷的

Ios 无法转换类型为';恩斯兰格';到预期的参数类型';NSRangePointer';敏捷的,ios,swift,Ios,Swift,嗨,我正在尝试从标签中查找角色的CGRect。我发现下面的代码很有用,但代码是在目标C中。我尝试使用Swift语言。以下是目标C代码的快速转换 var objLabel:UILabel = UILabel() func getBoundingRectForCharacterRange(range:NSRange) -> CGRect { var objTextStorage = NSTextStorage(attributedString: objLabel.attribute

嗨,我正在尝试从标签中查找角色的CGRect。我发现下面的代码很有用,但代码是在目标C中。我尝试使用Swift语言。以下是目标C代码的快速转换

var objLabel:UILabel = UILabel()

func getBoundingRectForCharacterRange(range:NSRange) -> CGRect {

    var objTextStorage = NSTextStorage(attributedString: objLabel.attributedText!)
    var objLayoutManager = NSLayoutManager()
    objTextStorage.addLayoutManager(objLayoutManager)

    var objTextContainer = NSTextContainer(size: CGSizeMake(100,100))
    objTextContainer.lineFragmentPadding = 0
    objLayoutManager.addTextContainer(objTextContainer)

    var objRange:NSRange!

    objLayoutManager.characterRangeForGlyphRange(range, actualGlyphRange: objRange)
    return objLayoutManager.boundingRectForGlyphRange(objRange, inTextContainer: objTextContainer)
}
我面临着以下错误

can not convert value of type 'NSRange!' to expected argument type 'NSRangePointer' (aka 'UnsafeMutablePointer<_NSRange>')
无法转换“NSRange”类型的值到预期的参数类型“NSRangePointer”(也称为“UnsafeMutablePointer”)
请帮我解决这个问题

我也试着从一个类似的问题的下面,但它也不工作

var range : NSRange?
doSomethingWithRangePointer(&range)

func doSomethingWithRangePointer(range : UnsafeMutablePointer<NSRange?>) {
    // Do stuff
}
var范围:NSRange?
DoSomethingWithRange指针(&range)
func doSomethingWithRangePointer(范围:UnsafeMutablePointer){
//做事
}

将对objLayoutManager.characterRangefolyprange()的调用更改如下:

objLayoutManager.characterRangeForGlyphRange(range, 
  actualGlyphRange: &objRange)

将对objLayoutManager.characterRangefolyprange()的调用更改如下:

objLayoutManager.characterRangeForGlyphRange(range, 
  actualGlyphRange: &objRange)

另外,
objRange
需要是一个初始化的nsrrange,而不是一个隐式展开的可选项。当我尝试使用&objRange时,它建议我删除添加中的“&”,而
objRange
需要是一个初始化的nsrrange,而不是隐式展开的可选项。当我尝试使用&objRange时,它建议我删除“&”请确认,你也在最新的Swift版本作为我的工作。我将Swift 2.2与Xcode 7.2一起使用,并确认您也在使用最新的Swift版本。我使用Swift 2.2和Xcode 7.2