我有一个快捷的方法,它接收一个结构体作为参数。由于结构体没有桥接到Objective-C,这个方法在桥接头文件中是不可见的。
我被迫创建了一个新的“完全相同”的方法,它接收"AnyObject
"而不是原始方法所需的结构体。
现在我的任务是从"AnyObject
"实例化Swift结构体。
在这种情况下,是否可以将"AnyObject
"“转换”为Swift结构体?
我是否必须编写模板来从AnyObject
构造Swift结构体?
我可以发送一个表示结构体键值对的NSDictionary
,这有助于解决问题吗?
例如:
Swift
struct Properties {
var color = UIColor.redColor()
var text = "Some text"
}
class SomeClass : UIViewController {
func configure(options : Properties) {
// the original method
// not visible from
}
func wrapObjC_Configure(options : AnyObject) {
// Visible to objective-c
var convertedStruct = (options as Properties) // cast to the swift struct
self.configure(convertedStruct)
}
}
Objective-c
SomeClass *obj = [SomeClass new]
[obj wrapObjC_Configure:@{@"color" : [UIColor redColor],@"text" : @"Some text"}]
Any
替代AnyObject
吗? - Swapnil Luktuke@objc
。 - qwerty_soProperties
改成一个class
而不是一个struct
吗?这样你就可以在 Objective-C 中使用它了。 - vacawama