2014-11-19 2 views
-1

Я пытаюсь вызвать метод экземпляра из метода класса в Swift, но я продолжаю получать ошибку «Отсутствующий аргумент для параметра № 1 при вызове» в «someMethod()" вызов.Не работает вызов метода экземпляра из метода класса

Знаете ли вы, почему?

Вот код:

class ViewController: UIViewController { 

    class func updateData() { 
     someMethod() 
    } 

    func someMethod() { 
     NSLog("someMethod") 
    } 

}

+1

Вам нужно вызовите метод экземпляра в фактическом экземпляре. – NobodyNada

+2

Вы не можете вызвать метод экземпляра из метода класса, потому что у вас нет экземпляра класса. «Отсутствующий» параметр «to someMethod» - это подразумеваемый «self», который передается вам. – vacawama

ответ

2

updateData объявляется как метод класса (т.е. статическом), и он выполняется в контексте типа класса, а не экземпляра класса. С другой стороны, someMethod является методом экземпляра.

Вы не можете выполнить метод экземпляра из статического метода, если только вы не предоставили экземпляр.

Не зная логики своего приложения, трудно понять, как проблема должна быть решена. Некоторые возможные решения:

  1. делают uploadData метод экземпляра, путем удаления class из его подписи:

    func updateData() { ... 
    
  2. сделать someMethod статический метод:

    class func someMethod() { ... 
    
+0

Спасибо, но я хочу называть «updateData()» из другого класса, поэтому он был методом класса. невозможно. –

+0

Я бы не сказал, что это невозможно - это просто невозможно. Метод экземпляра требует экземпляра, но вы хотите, чтобы он работал без экземпляра. – Antonio

+1

Вы можете вызвать методы экземпляра из других классов, вам просто нужно предоставить указатель экземпляра к другому классу. Вероятно, вы могли бы принести пользу от изучения объектно-ориентированного программирования и классов. – zaph

Смежные вопросы