How do you call an Objective-C variadic method from Swift?

前端 未结 3 519
无人共我
无人共我 2020-11-27 16:56

Supposing I have a class in Objective-c with a static method like this:

+ (NSError *)executeUpdateQuery:(NSString *)query, ...;

How do I ca

3条回答
  •  暖寄归人
    2020-11-27 17:49

    In Objective C

    MyClassName.h

    + (BOOL)executeSQL:(NSString *)sql args:(va_list)args;
    

    MyClassName.m

    + (BOOL)executeSQL:(NSString *)sql args:(va_list)arguments
    {
        NSLogv(sql, arguments);
    
        sql = [[NSString alloc] initWithFormat:sql arguments:arguments];
        va_end(arguments);
    }
    

    Swift - add in its class Works perfect

    protocol CFormatFunction {
       class func executeSQLArg(format: String, _ args: CVarArgType...) -> Bool
    }
    
    extension MyClassName : CFormatFunction {
       class func executeSQLArg(format: String, _ args: CVarArgType...) -> Bool
       {
            return MyClassName(format, args:getVaList(args))
       }
     }
    

    How to use

    Swift

    MyClassName.executeSQLArg(query, "one","two",3)
    

    Objetive C

    [MyClassName executeSQLArg:query, @"one",@"two",@3]
    

提交回复
热议问题