在Swift中使用Objective-C方法似乎跨越了Swift语言的关键字 [英] Use objective-c method in swift seems crossing keyword of swift language
问题描述
我有一个Objective-C的方法:
I have an objective-c method:
-(DeviceVar *)var:(NSString*)valid
在Objective-C中,我简单地将其用作:
In objective-c I simple use it as:
DeviceVar* rtc = [device var:@"rtc"];
但是我很快就使用这种方法遇到了问题:
But in swift I have a problem using this method:
let rtc = device.var("etc")
因为我猜var是一个关键字,所以我的问题是如何使其工作.
as var is a keyword I guess, so my question is how to make it work.
推荐答案
如果需要,您可以始终在反引号中添加保留字 将其用作方法名称(例如,请参见 使用保留关键字作为枚举大小写):
You can always enclose a reserved word in backticks if you need to use it as a method name (see for example Use reserved keyword a enum case):
let rtc = device.`var`("etc")
如果您具有对Objective-C头文件的写访问权,则另一个 选项是为Swift定义一个不同的方法名称 (比较同一项目中的Swift和Objective-C 将Swift与Cocoa和Objective-C一起使用":
If you have write access to the Objective-C header files then another option is to define a different method name for Swift (compare Swift and Objective-C in the Same Project in the "Using Swift with Cocoa and Objective-C " reference):
-(DeviceVar *)var:(NSString*)valid NS_SWIFT_NAME(deviceVar(_:));
然后可以从Swift中调用
which can then be called from Swift as
let rtc = device.deviceVar("etc")
这篇关于在Swift中使用Objective-C方法似乎跨越了Swift语言的关键字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!