В XCODE/Swift, как я могу создать одну функцию, которая может быть вызвана с разных контроллеров представления?

Я хотел бы реализовать набор функций и что они будут вызываться различными диспетчерами представлений в моем приложении.

Какой лучший подход для этого?

Примером функции, которая будет использоваться во всем приложении, является тот, который возвращает форматированный Float как строку:

func roundAndFormatFloat(floatToReturn : Float, numDecimalPlaces: Int) -> String{

    let formattedNumber = String(format: "%.\(numDecimalPlaces)f", floatToReturn)
    return formattedNumber

}

Ответ 1

Я предлагаю создать новый файл Util.swift и вставить эту функцию в этот файл. Это то, что Util.swift будет выглядеть так:

import UIKit

func roundAndFormatFloat(floatToReturn : Float, numDecimalPlaces: Int) -> String{

    let formattedNumber = String(format: "%.\(numDecimalPlaces)f", floatToReturn)
    return formattedNumber

}

Вы можете разместить другие функции и константы в Util.swift. Чтобы вызвать его в контроллере просмотра, вы выполните следующее:

var str = roundAndFormatFloat(float, numDecimalPlaces: decimalPlaces)

Вот еще один вариант. Создайте еще один класс под названием Util и поместите эту функцию там как функцию класса:

import UIKit

class Util{
    class func roundAndFormatFloat(floatToReturn : Float, numDecimalPlaces: Int) -> String{

        let formattedNumber = String(format: "%.\(numDecimalPlaces)f", floatToReturn)
        return formattedNumber

    }
}

Вызов будет выглядеть так:

var str = Util.roundAndFormatFloat(float, numDecimalPlaces: decimalPlaces)

Здесь вы можете добавить другие методы класса, которые нужно использовать глобально. Обратите внимание: вы не можете создавать глобально доступные переменные или константы, поскольку переменные класса и константы еще не были реализованы в Swift.

Ответ 2

Способ Swift состоит в расширении UIViewController и добавлении туда ваших функций.

Swift 3 Пример:

extension UIViewController {

    func roundAndFormatFloat(floatToReturn : Float, numDecimalPlaces: Int) -> String{
        let formattedNumber = String(format: "%.\(numDecimalPlaces)f", floatToReturn)

        return formattedNumber
    }

    func foo() -> String {
        return "foo"
    }

}

Ответ 3

Создание класса Util в Swift:

  • Создать новый файл с именем Util
  • Создайте функции класса: класс func funtionname:() → {}

Exmaple:

import UIKit       import Foundation

    class Util: NSObject {


        //MARK: - SET USER LOGGED IN
        class func set_IsUserLoggedIn(state : Bool) {
            var userloggedin:     UserDefaults?
            userloggedin        = UserDefaults.standard
            userloggedin?.set(state, forKey: "IS_USER_LOGGED_IN")
        }


        //MARK: - GET USER LOGGED IN
        class func get_IsUserLoggedIn() -> Bool {

            var userloggedin:     UserDefaults?
            userloggedin        = UserDefaults.standard

            var checkUser:Bool? = false
            checkUser           = userloggedin?.bool(forKey: "IS_USER_LOGGED_IN")

            return checkUser!
        }



    }

Вы можете вызвать функцию Util в файле Any Class как:

 if Util.get_IsUserLoggedIn(){
        print("User is logged in")

    }
    else{
        print("User is not logged in")
    }