NSTextAlignment无法在Objective-C中表示

时间:2015-07-08 23:16:07

标签: objective-c swift bridge

在我的Swift类中,我通过将变量定义为

将变量暴露给目标c
@objc var textAlignment: NSTextAlignment? {
    didSet {
        if textAlignment != nil {
            label.textAlignment = textAlignment!
        }
    }
}

错误!因为编译器抱怨它不是可以在Objective-C中表示的类型。

enter image description here

但以下是正确的

var textAlignment: NSTextAlignment? {
    didSet {
        label.textAlignment = textAlignment!
    }
}

@objc var textAlignment: NSTextAlignment {
    didSet {
        label.textAlignment = textAlignment
    }
}

所以看起来如果我将方法暴露给objective-C,它不能是可选值。但是,如果我在内部使用它,我可以!是因为它是一个标量值,在Objective-C中我们无法将其表示为零?

我的目的只是想让它不是强制性的。

1 个答案:

答案 0 :(得分:2)

NSTextAlignment是一个枚举,而不是一个类 - textAlignment变量不能映射为对象c的可选项,因为这将要求它是指向对象类型的指针。

尝试:

@objc var textAlignment: NSTextAlignment { 
  ...
}

或者,如果你真的需要它是可选的,你可以将它作为NSNumber暴露给Objective C,在没有值时将textAlignment.rawValue或设置包装为nil。