我在目标 c 中有下一个函数
+ (NSString *)getNsLog:(NSString *)pString, ...{
va_list args;
va_start(args, pString);
NSLogv(pString, args);
va_end(args);
return [[NSString alloc] initWithFormat:pString arguments:args];
}
如何从 swift 调用此函数或将代码转换为 swift,以便在调用该函数时可以:
getNslog("my value1 = %@ value2 = %@","hello","world")
注意,第二个参数没有别名如何这样。
getNslog("my value1 = %@ value2 = %@", args:"hello","world")
我解决了以下问题:
在目标 C 中,将我的代码更改为:
+(NSString*)getNsLog:(NSString*)pString args:(va_list)args{
NSLogv(pString, args);
va_end(args);
return [[NSString alloc] initWithFormat:pString arguments:args];
}
在快速应用程序委托中,我添加了
extension MyClass {
class func getNsLog(format: String, _ args: CVarArgType...) -> NSString?
{
return MyClass.getNsLog(format, args:getVaList(args))
}
}
现在我可以调用函数了
NSLog("%@", MyClass.getNsLog("%@,%@", "hello","World")!)
我基于帖子重复 你如何从 Swift 调用 Objective-C 可变参数方法?
谢谢。
-
只需将包含此方法的类导入
YourProjectname-Bridging-Header.h
文件中即可。#import "`YourClass.h"
-
创建导入类的对象
var a = YourClass()
-
然后只需调用该方法并传递所需的参数
a.getNsLog(yourParameters)
我希望这有帮助