NSTextAlignment 无法在 Objective-C 中表示
NSTextAlignment can not be represented in Objective-C
在我的 Swift class 中,我通过将变量定义为
向 objective 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 中我们无法将其表示为 nil 吗?
我的意图只是想让它不是强制性的。
NSTextAlignment
是一个枚举,而不是 class - textAlignment
变量不能映射为 objective c 的可选变量,因为这需要它是一个指向对象类型的指针。
尝试:
@objc var textAlignment: NSTextAlignment {
...
}
或者,如果你真的需要它是可选的,你可以将它作为 NSNumber
公开给 Objective C,包装 textAlignment.rawValue
或在不需要值时设置为 nil .
在我的 Swift class 中,我通过将变量定义为
向 objective 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 中我们无法将其表示为 nil 吗?
我的意图只是想让它不是强制性的。
NSTextAlignment
是一个枚举,而不是 class - textAlignment
变量不能映射为 objective c 的可选变量,因为这需要它是一个指向对象类型的指针。
尝试:
@objc var textAlignment: NSTextAlignment {
...
}
或者,如果你真的需要它是可选的,你可以将它作为 NSNumber
公开给 Objective C,包装 textAlignment.rawValue
或在不需要值时设置为 nil .