我想访问Objective-c中的 Swift代码。
我在swift中编写了一个包含静态方法的类。我想在目标C类中访问该静态方法。
这是类声明:
@objc class LocalizedResource: NSObject {
/*!
* @discussion This function will get localize string for key
* @param key Localize key
* @return String for locaized key
* @code LocalizedResource.getStringForKey(key);
*/
static func getStringForKey(key:String) -> String {
let frameworkBundle = NSBundle.mainBundle()
let value = frameworkBundle.localizedStringForKey(key, value: nil, table: nil)
return value;
}
}
我为它做了以下设置:
此外,我在Swift课程中的类声明之前添加了 @Obj 。
我在.m文件中导入MyProject-Swift.h,我想访问该方法。
但是当我尝试访问它时,它不允许我访问该静态方法。
有人有解决方案吗?有什么遗失的吗?
Thnaks。
答案 0 :(得分:15)
请注意,在Swift 4中,构建设置swift 3 @objc inference
为default
,我们必须将函数显式标记为@objc
,否则它将不会在Swift桥接头中生成类函数。
答案 1 :(得分:7)
来自你的评论:
我将此方法称为:
errorMessage.text = LocalizedResource.getStringForKey(@"TIMED_OUT_ERROR");
在Objective-C中,“点语法”用于属性, 不是方法。正确的电话应该是
errorMessage.text = [LocalizedResource getStringForKey:@"TIMED_OUT_ERROR"];