是否有一个与Objective-C的@encode
相当的Swift
例如
@encode(void *) // -> @"^v"
搜寻一无所获。
发布于 2014-08-03 01:27:00
不,没有-因为在幕后,Swift类不使用Objective-C自省来完成他们的工作。不需要为了传递/调用数据而计算这个(就像Objective-C中那样)。
但是,如果您需要在运行时动态使用它(例如,为了与现有的Objective-C方法进行互操作),那么您可以创建一个Objective-C调用并传递对象,或者(对于简单类型)编写一个查找表。
类型编码在具有映射的https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html中列出,并且可以编写执行查找的开关类型语句。
但从根本上说,如果你有一个想要传入的类型,并且发现它是objective c编码类型,你可以使用NSObject的objCType方法:
var i = 1 as NSNumber
String.fromCString(i.objCType)! == "q"
如果您需要将其作为未受干扰的C字符串传递,您甚至可能不需要将其转换回Swift字符串类型。
https://stackoverflow.com/questions/24456674
复制相似问题