我无法在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)
答案 0 :(得分:4)
问题几乎可以肯定,您的RegistrationVC
类不是ViewController
类的子类。
要解决此问题,您应该更改方法以期望UIViewController
(注意UI
)或将RegistrationVC
更改为ViewController
的子类,永远是最有意义的(可能是前者)。
我们可以通过阅读错误消息来更好地理解这一点:
无法调用postRequest'使用类型'的参数列表(String,postUrl:String,currentVC:RegistrationVC)'
此错误告诉我们一些事情。
首先,编译器确实找到了名为postRequest(:postUrl:currentVC:)
的方法,但问题在于我们传递的参数类型。
编译器认为我们正在尝试传递String
,String
和RegistrationVC
。那么这与该方法的实际定义有何不同?
好吧,我们得到了正确的字符串,所以它必须是最后一个错误的参数。编译器期望第三个参数有ViewController
个对象,但我们正在尝试发送RegistrationVC
(可能是UIViewController
的子类,它与{{1}不同(这是你自己的ViewController
子类之一,需要一个更好的名字)。
因此,最有可能的解决方案是(取决于您对UIViewController
的实施以及您在方法中使用postRequest(:postUrl:currentVC:)
所做的事情)来简单地更改第三个参数的类型: / p>
currentVC: