为什么我的函数在Swift中没有正确完成自动完成?

时间:2014-09-25 20:33:41

标签: ios swift xcode6

我想使用自己的自定义函数,因此我创建了以下类,它是NSObject的子类,如:

class ServeStatsTable: NSObject {...}

在上面的课程中,我定义了以下方法:

func serveTableViewHeader(tableView: UITableView!, number: String, info: NSDictionary, color: UIColor!) -> UIView! {...}

但是,当我尝试从另一个类(UIViewController的子类)中调用上面的方法时,该方法对Xcode中的自动完成没有反应,完成以下操作: / p>

ServeStatsTable.serveTableViewHeader(tableView)

所以我把它修改为以下正确的方法调用:

ServeStatsTable.serveTableViewHeader(tableView, number: "1", info: info, color: UIColor.orangeColor())

然后,Xcode发出错误:Extra argument 'number'...

所以我想我甚至无法正确定义方法。

但是如何正确定义方法呢?错误发生在类中的另一个函数上。

最后,当我尝试在Xcode中进行自动完成时,会显示以下弹出窗口:

enter image description here

如果它不是参数列表,那么serveTableViewHeader的左侧代码是什么意思?看起来这里的论点是self: ServeStatsTable,这不是我想要的。

1 个答案:

答案 0 :(得分:1)

ServeStatsTable是一个类,但serveTableViewHeader(number:info:color:)是实例方法,而不是类方法。所以ServeStatsTable.serveTableViewHeader(tableView, number: "1", info:info, color:UIColor.orangeColor())不是有效的表达式。

Extra argument 'number'错误是由于您在tableView之后使用冒号而不是逗号:

ServeStatsTable.serveTableViewHeader(tableView: number: "1", info: info, color: UIColor.orangeColor())
                                              ^

如果你想让它成为一个类方法,所以你在类而不是实例上调用它,将class放在方法声明中,如下所示:

class ServeStatsTable: NSObject {

    class func serveTableViewHeader(tableView: UITableView!, number: String, info: NSDictionary, color: UIColor!) -> UIView! {...}

    ...