Matrosov Alexander Matrosov Alexander - 1 month ago 4
Objective-C Question

Use objective-c method in swift seems crossing keyword of swift language

I have an objective-c method:

-(DeviceVar *)var:(NSString*)valid

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")

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")

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(_:));

which can then be called from Swift as

let rtc = device.deviceVar("etc")