Использовать функцию из одного класса в другом классе в Swift

Итак, скажем, у меня есть класс под названием Math

class Math{

    func add(numberOne: Int, numberTwo: Int) -> Int{

        var answer: Int = numberOne + numberTwo
        return answer
    }

В этом классе есть функция, которая позволяет пользователю добавлять два числа.

Теперь у меня есть еще один класс, который является подклассом UIViewController, и я хочу использовать функцию add из класса Math, как это сделать?

class myViewController: UIViewController{

    //Math.add()???

}

Ответ 1

Если вы хотите сказать Math.add(...), вам нужно использовать метод класса - просто добавьте class до func:

class Math{

    class func add(numberOne: Int, numberTwo: Int) -> Int{

        var answer: Int = numberOne + numberTwo
        return answer
    }
}

Затем вы можете вызвать его из другого класса Swift следующим образом:

Math.add(40, numberTwo: 2)

Чтобы назначить его переменной i:

let i = Math.add(40, numberTwo: 2) // -> 42

Ответ 2

Используйте ключевое слово class перед add, чтобы сделать его функцией класса.

Вы можете использовать

class Math{
    class func add(numberOne: Int, numberTwo: Int) -> Int{

        var answer: Int = numberOne + numberTwo
        return answer
    }
}

class myViewController: UIViewController{

    //Math.add()???
    //call it with class `Math`
    var abc = Math.add(2,numberTwo:3)
}


var controller = myViewController()
controller.abc  //prints 5

Этот код из playgound.You может звонить из любого класса.

Ответ 3

Swift 4:

class LoginViewController: UIViewController {
//class method
@objc func addPasswordPage(){
  //local method  
  add(asChildViewController: passwordViewController)
    }

func  add(asChildViewController viewController: UIViewController){

    addChildViewController(viewController)
  }
}

class UsernameViewController: UIViewController {

let login = LoginViewController()
override func viewDidLoad() {
    super.viewDidLoad()
   //call login class method
   login.addPasswordPage()

  }
}