NSTextAlignment无法在Objective-C中表示

NSTextAlignment无法在Objective-C中表示,objective-c,swift,bridge,Objective C,Swift,Bridge,在我的Swift课程中,我将变量定义为 @objc var textAlignment: NSTextAlignment? { didSet { if textAlignment != nil { label.textAlignment = textAlignment! } } } 这是错误的!因为编译器抱怨它不是一个可以用Objective-C表示的类型 但以下是正确的 var textAlignment: NSTe

在我的Swift课程中,我将变量定义为

@objc var textAlignment: NSTextAlignment? {
    didSet {
        if textAlignment != nil {
            label.textAlignment = textAlignment!
        }
    }
}
这是错误的!因为编译器抱怨它不是一个可以用Objective-C表示的类型


但以下是正确的

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

因此,如果我将方法公开给objective-C,它就不能是可选值。但是,如果我在内部使用它,我可以!是因为它是一个标量值,而在Objective-C中,我们无法将其表示为nil吗


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

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

尝试:


或者,如果您真的需要它是可选的,您可以将它作为一个
NSNumber
公开给Objective C,包装
textAlignment.rawValue
,或者在不需要值时设置为nil。

是的,我想是这样。它只是目标c中的一个标量值。我的目的只是想让它不是强制性的。
@objc var textAlignment: NSTextAlignment {
    didSet {
        label.textAlignment = textAlignment
    }
}
@objc var textAlignment: NSTextAlignment { 
  ...
}