+ (NSError *)executeUpdatequery:(Nsstring *)query,...;
如何从Swift打电话?自动完成无法识别,编译器不满意:
MyClassname.executeUpdatequery("")
抱怨’MyClassname.Type没有一个名为executeUpdatequery的成员’
编写您的可变方法的va_List版本;+ (NSError *)executeUpdatequery:(Nsstring *)query,...{ va_List argp; va_start(argp,query); NSError *error = [MyClassname executeUpdatequery: query args:argp]; va_end(argp); return error;}+ (NSError *)executeUpdatequery:(Nsstring *)query args:(va_List)args{ NSLogv(query,args); return nil;}
这可以从Swift调用
MyClassname.executeUpdatequery("query %d,%d %d",args: getVaList([1,2,3,4]))
添加扩展以支持本机Swift可变参数:
protocol CFormatFunction { class func executeUpdatequery(format: String,_ args: CVararg...) -> NSError?}extension MyClassname : CFormatFunction { class func executeUpdatequery(format: String,_ args: CVararg...) -> NSError? { return MyClassname.executeUpdatequery(format,args:getVaList(args)) }}MyClassname.executeUpdatequery("query %d %@ %.2f",99,"Hello",3.145)
小心,Swift不提供NS_FORMAT_FUNCTION警告(-Wformat)
MyClassname.executeUpdatequery("query %@",99)总结
以上是内存溢出为你收集整理的你如何称之为Swift的Objective-C可变方法?全部内容,希望文章能够帮你解决你如何称之为Swift的Objective-C可变方法?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)