2017-05-25 60 views
1

我试图在我的Objective-C项目中实现一些Swift框架。我已经设置了所有Bridge-Header,并且在函数和类中以快速类编写了@objc。因此它需要做到以下几点,但示例代码中斯威夫特给出:访问Objective-C类中的对象的Swift函数

barView.addBarBackground(startAngle: 90, endAngle: -270, radius: 100, width: 15) 

我不得不为对象barView执行的OBJ-C类的代码。我试图做到这一点,但它不起作用:

[_barView.addBarBackground startAngle: 90 endAngle: -270 radius: 100 width: 15]; 

我该怎么办?

编辑:

我有一个IBOutlet中连接:

@property (strong) IBOutlet OGCircularBarView *barView; 

所以,有一个名为barView的对象。我也有一些斯威夫特 - 类代码:

import Cocoa 

@objc public class OGCircularBarView: NSView, Sequence { 
    //... 
    @objc public func addBarBackground(startAngle: CGFloat, endAngle: CGFloat, radius: CGFloat, width: CGFloat, color: NSColor) { 
     //some code 
    } 
    //... 
} 

我需要执行的代码在Objective-C类(在斯威夫特给出):

barView.addBarBackground(startAngle: 90, endAngle: -270, radius: 100, width: 15) 

我怎样才能把它改写以便它在Objective-C中工作?

回答

1

试试这个:

[_barView addBarBackgroundStartAngle: 90 endAngle: -270 radius: 100 width: 15]; 

第一个问题是你不能使用点语法的方法;这是括号是什么:[object message:withArguments:...]

第二个是Swift函数的名称是Obj-C翻译有点尴尬。如果你声明的迅猛功能如下:

func addBarBackgroundWithStartAngle(_ startAngle: Type, endAngle: Type... 

...这将被转换为更容易阅读:

[_barView addBarBackgroundWithStartAngle: endAngle: ...] 

我希望这有助于。

+0

不幸的是,我必须为名为barView的对象添加一个背景。这个背景有一些参数,如startAngle,endAngle,radius等。我必须告诉函数addBarBackground,我需要什么类型的背景。看到我的编辑 – dvijok

+0

Y-是的。 :-)这就是我正在回答的。你试过了吗? –

+0

是啊!我只是改变了你所说的功能,它的工作原理:) 谢谢! – dvijok