无法在两个不同的类中调用类方法swift

时间:2015-06-22 11:59:28

标签: swift

我无法在swift中为多个类调用类实例。

我有三个视图控制器。

1)的ViewController 2)RegistrationVC 3)WebServiceInterface

WebServiceInterface有一个方法

func postRequest(postString: String, postUrl:String, currentVC:ViewController){
    // ... some code
}

我可以从ViewController调用此方法,但不能从RegistrationVC

调用此方法 来自ViewController的

很好

var webServiceInterface = WebServiceInterface()
webServiceInterface.delegate = self
webServiceInterface.postRequest(str, postUrl: url, currentVC: self)

但是从RegistrationVC它显示:

  

无法调用postRequest'使用类型'的参数列表(String,postUrl:String,currentVC:RegistrationVC)'

var webServiceInterface = WebServiceInterface()
webServiceInterface.delegate = self
webServiceInterface.postRequest("asd", postUrl: "asd", currentVC: self)

enter image description here

1 个答案:

答案 0 :(得分:4)

问题几乎可以肯定,您的RegistrationVC类不是ViewController类的子类。

要解决此问题,您应该更改方法以期望UIViewController(注意UI)或将RegistrationVC更改为ViewController的子类,永远是最有意义的(可能是前者)。

我们可以通过阅读错误消息来更好地理解这一点:

  

无法调用postRequest'使用类型'的参数列表(String,postUrl:String,currentVC:RegistrationVC)'

此错误告诉我们一些事情。

首先,编译器确实找到了名为postRequest(:postUrl:currentVC:)的方法,但问题在于我们传递的参数类型。

编译器认为我们正在尝试传递StringStringRegistrationVC。那么这与该方法的实际定义有何不同?

好吧,我们得到了正确的字符串,所以它必须是最后一个错误的参数。编译器期望第三个参数有ViewController个对象,但我们正在尝试发送RegistrationVC(可能是UIViewController的子类,它与{{1}不同(这是你自己的ViewController子类之一,需要一个更好的名字)。

因此,最有可能的解决方案是(取决于您对UIViewController的实施以及您在方法中使用postRequest(:postUrl:currentVC:)所做的事情)来简单地更改第三个参数的类型: / p>

currentVC:
相关问题