在Swift类中,我将一个变量定义为
@objc var textAlignment: NSTextAlignment? {
didSet {
if textAlignment != nil {
label.textAlignment = textAlignment!
}
}
}
这是错误的!因为编译器抱怨它不是一个可以用Objective-C表示的类型。
但以下是正确的
var textAlignment: NSTextAlignment? {
didSet {
label.textAlignment = textAlignment!
}
}
或者
@objc var textAlignment: NSTextAlignment {
didSet {
label.textAlignment = textAlignment
}
}
因此,如果我将方法公开给objective-C,它就不能是可选值。不过,如果我在内部使用它,我可以!是因为它是一个标量值,在Objective-C中,我们无法将它表示为零吗?
我只是想让它不是强制性的。
最佳答案
NSTextAlignment
是枚举,而不是类-textAlignment
变量不能作为可选变量映射到目标c,因为这需要它是指向对象类型的指针。
尝试:
@objc var textAlignment: NSTextAlignment {
...
}
或者,如果您真的需要它是可选的,您可以将它作为
NSNumber
公开给目标C,包装textAlignment.rawValue
或在不需要值时设置为nil。