如何在 swift 中使用参数调用函数目标 c



我在目标 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 可变参数方法?

谢谢。

  1. 只需将包含此方法的类导入YourProjectname-Bridging-Header.h文件中即可。

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

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

    a.getNsLog(yourParameters)
    

我希望这有帮助

最新更新