让Swift类充当UIViewController子类和UITableViewDelegate

nav*_*vPI 4 protocols uiviewcontroller ios swift

我在斯威夫特已经写一个应用程序,并作为一个结果,需要写一个类,这两个子类UIViewController,并符合多种协议(包括UIAlertViewDelegate,UITableViewDelegateUITableViewDataSource).我目前正在使用Xcode 6 Beta,并遇到了很多困难.

我遇到的问题源于类声明:

class TableAddition :  UIViewController, UIAlertViewDelegate  { 
Run Code Online (Sandbox Code Playgroud)

看来编译器没有识别协议,当我尝试实现以下方法时:

@optional func alertView(alertView: UIAlertView!, clickedButtonAtIndex buttonIndex: Int) {

}
Run Code Online (Sandbox Code Playgroud)

我收到一条错误,说"'可选'属性只能应用于协议成员".虽然消除了@optional沉默的错误,但我不相信该方法被认为是UIAlertViewDelegate协议的成员(Xcode从未为我自动完成方法实现).

这是一个源于Swift方面的问题,还是我的错误?

Mar*_*n R 5

从Swift Book中的"Protocols":

可选协议要求

您可以定义协议的可选要求,这些要求不必由符合协议的类型实现.可选要求以@optional关键字作为协议定义的一部分作为前缀.

因此,@optional关键字仅在协议定义中用于标记可选要求.它不与协议方法的实现一起使用.@optional因此,删除代码是正确的解决方案.

Xcode没有自动完成协议方法似乎是当前beta版本的问题.