我正在创建像
@objc extension String {
static func className(_ aClass: AnyClass) -> String {
return NSStringFromClass(aClass).components(separatedBy: ".").last!
}
func localize() -> String
{
return NSLocalizedString(self, comment: "")
}}
我正在像这样迅速使用
btnReferencePhoto.setTitle("ADD REFERENCE PHOTO".localize(), for: .normal)
我想在目标c中使用它,但是我可以访问目标c文件中的本地化方法,因为我在字符串扩展名中添加了@objc,但是它给出了错误
我也试过
您不能String
在Objective-C中使用。Swift结构不能在Objective-C中使用。
一种解决方案是将您的String扩展镜像到NSString的扩展中。
extension String {
static func className(_ aClass: AnyClass) -> String {
return NSStringFromClass(aClass).components(separatedBy: ".").last!
}
func localize() -> String {
return NSLocalizedString(self, comment: "")
}
}
@objc extension NSString {
static func className(_ aClass: AnyClass) -> NSString {
let res = String.className(aClass)
return res as NSString
}
func localize() -> NSString {
let str = self as String
return str.localize() as NSString
}
}
NSString扩展调用String扩展实现,因此您无需复制功能,仅复制API。
现在,在您的Objective-C代码中,您可以执行以下操作:
NSString *name = [NSString className:[SomeObjectiveCClass class]];
NSLog(@"name = %@", name);
NSString *localized = [@"test" localize];
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句