ios - 将 NSRangePointer 从 Objective-C 翻译成 Swift

标签 ios objective-c swift

我在将一些 Objective-C 代码转换为 Swift 时遇到错误。

我正在使用 - attribute:atIndex:effectiveRange: NSAttributedString 并且有关于 effectiveRange 参数的错误,它是一个 NSRangePointer

objective-C :

NSRange range;
id value = [self.textanalyze
                      attribute:attribute
                        atIndex:index
                 effectiveRange:&range]

swift :

var range : NSRange?
var value : Any = self.textanalyze.attribute(attributes,
                      atIndex: index,
               effectiveRange: &range)   

我在 &range 附近遇到错误。

最佳答案

您需要展开范围。

此外,您需要初始化范围。否则,这会使您的程序崩溃。

var range : NSRange? = NSMakeRange(0, 1)
self.textanalyze.attribute(attributes, atIndex: index, effectiveRange: &range!)

或者,如果您不想展开您的范围(它可能是 nil),请像这样重写您的函数:

var range : NSRange?
doSomethingWithRangePointer(&range)

func doSomethingWithRangePointer(range : UnsafeMutablePointer<NSRange?>) {
    // Do stuff
}

但是您可能不需要首先将您的范围设置为可选(想想,range 是否需要为 nil?如果不需要,那么它就不需要是可选的。 ), 在这种情况下,像这样初始化范围就可以了:

var range = NSMakeRange(0, 1)

关于ios - 将 NSRangePointer 从 Objective-C 翻译成 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25825301/

相关文章:

ios - 线程 1 : EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP) Error

iOS - 允许我的应用程序在锁定屏幕上显示信息吗?

iphone - 为方法传递 block

ios - 在 swift 3.0 中画线

ios - 如何在spritekit场景编辑器中设置纹理过滤模式?

c++ - iPhone 游戏 CPU 分析和 pthread_setspecific

iphone - 在应用程序商店中打开 itune 链接?

ios - 弹出一个具有异步任务的 viewController,它会在 iOS 任务完成之前销毁吗?

swift - 如何使用回调将数据发送回之前的ViewController

ios - 迁移到 Swift 2 后出现 UIActivityViewController 错误