Uso funzione da una classe a un’altra classe di Swift

Quindi, consente di dire che ho una classe chiamata Matematica

class Math{

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

        var answer: Int = numberOne + numberTwo
        return answer
    }

In questa classe c’è una funzione che consente all’utente di aggiungere due numeri.

Ora ho un’altra classe che è una sottoclasse di un UIViewController e voglio utilizzare la funzione di aggiunta della classe Math, come faccio a fare questo?

class myViewController: UIViewController{

    //Math.add()???

}
  • var answer dovrebbe essere let answer
InformationsquelleAutor Stephen Fox | 2014-07-23



3 Replies
  1. 20

    Se si vuole essere in grado di dire Math.add(...), ti consigliamo di utilizzare un metodo di classe – basta aggiungere class prima func:

    class Math{
    
        class func add(numberOne: Int, numberTwo: Int) -> Int{
    
            var answer: Int = numberOne + numberTwo
            return answer
        }
    }

    Poi si può chiamare da un altro Swift di classe come questo:

    Math.add(40, numberTwo: 2)

    Per assegnare a una variabile i:

    let i = Math.add(40, numberTwo: 2) // -> 42
    • Grazie, ma perché non si prende il primo argomento il nome di numberOne e tenuto il secondo numberTwo nella chiamata di funzione?
    • È una Swift nuance, @StephenFox. Swift lascia fuori il primo parametro etichetta a qualsiasi funzione che non è una funzione di inizializzazione. Spiego ancora, questa risposta.
  2. 3

    Utilizzare class parola chiave prima di add funzione per renderlo funzione di classe.

    È possibile utilizzare

    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

    Questo codice è da playgound.È possibile chiamare da qualsiasi classe.

  3. 0

    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()
    
      }
    }

Lascia un commento