如何使用 swift 中的参数调用函数 objective c

How call a function objective c with args in swift

我在 objective 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")
  1. 只需在 YourProjectname-Bridging-Header.h 文件中导入包含此方法的 class。

     #import "`YourClass.h"
    
  2. 创建导入的 class 的对象

     var a = YourClass()
    
  3. 然后调用该方法并传递所需的参数

    a.getNsLog(yourParameters)
    

希望对您有所帮助

我解决了:

在 objective c 中将我的代码更改为:

+(NSString*)getNsLog:(NSString*)pString args:(va_list)args{

NSLogv(pString, args);

va_end(args);

return [[NSString alloc] initWithFormat:pString arguments:args];
}

在 swift app delegate 我添加

extension MyClass {
class func getNsLog(format: String, _ args: CVarArgType...) -> NSString?
    {
    return MyClass.getNsLog(format, args:getVaList(args))
    }
}

现在我可以调用函数

NSLog("%@", MyClass.getNsLog("%@,%@", "hello","World")!)

我在 post 重复 How do you call an Objective-C variadic method from Swift?

谢谢。