在我的Swift类中,我通过将变量定义为
将变量暴露给目标c@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中我们无法将其表示为零?
我的目的只是想让它不是强制性的。
答案 0 :(得分:2)
NSTextAlignment
是一个枚举,而不是一个类 - textAlignment
变量不能映射为对象c的可选项,因为这将要求它是指向对象类型的指针。
尝试:
@objc var textAlignment: NSTextAlignment {
...
}
或者,如果你真的需要它是可选的,你可以将它作为NSNumber
暴露给Objective C,在没有值时将textAlignment.rawValue
或设置包装为nil。