在Swift中实现Objective c协议

时间:2014-11-05 09:00:15

标签: objective-c swift protocols

我在一个客观的c类中有这个协议:

@protocol YTManagerDelegate <NSObject>
@required
- (void)uploadProgressPercentage:(int)percentage;
@end
...

和一个连接它的快速课程:

class YTShare: UIViewController, YTManagerDelegate{

    func uploadProgressPercentage(percentage:Int?){
        println(percentage)
    }
    ...

我收到错误:类型YTShare不符合协议YTShareDelegate ,我可能写错了swift函数,所以obj类找不到它。我怎么写得正确?

1 个答案:

答案 0 :(得分:5)

委托方法中有两个错误

func uploadProgressPercentage(percentage:Int?){
    println(percentage)
}

参数不能是可选的,C类型int映射到Swift 作为CIntInt32的别名):

func uploadProgressPercentage(percentage:CInt){
    println(percentage)
}

或者,您可以在Objective-C协议中使用NSInteger,即 映射到Swift中的Int。这取决于32位或64位整数 在架构上,int / CInt总是32位。