En XCODE / Swift, ¿cómo puedo crear una sola function que se pueda llamar desde varios controlleres de vista?

Me gustaría implementar un set de funciones y que sean llamadas por varios controlleres de vista en mi aplicación.

¿Cuál es el mejor enfoque para esto?

Un ejemplo de una function que se utilizará en toda la aplicación es este que devuelve un Float formateado como una cadena:

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

Sugiero crear un nuevo file llamado Util.swift, y pegar esa function en ese file. Esto es lo que sería Util.swift:

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

Puede colocar otras funciones y constantes que necesita en Util.swift. Para llamarlo en su controller de vista, hace esto:

 var str = roundAndFormatFloat(float, numDecimalPlaces: decimalPlaces) 

Aquí hay otra opción. Cree otra class llamada Util, y ponga esta function allí como una function de class:

 import UIKit class Util{ class func roundAndFormatFloat(floatToReturn : Float, numDecimalPlaces: Int) -> String{ let formattedNumber = String(format: "%.\(numDecimalPlaces)f", floatToReturn) return formattedNumber } } 

Llamarlo se vería así:

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

Puede agregar aquí otros methods de class que necesita usar globalmente. Tenga en count que no puede crear variables o constantes disponibles globalmente, ya que las variables de class y las constantes aún no se han implementado en Swift.

La forma Swift es extender UIViewController y agregar sus funciones allí.

Swift 3 Ejemplo:

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

Crear class Util en Swift:

  1. Cree un nuevo file con el nombre Util
  2. Cree una class de funciones: class func funtionname :() -> {}

Exmaple:

Importar 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! } } 

Puede llamar a la function Util en cualquier file de class como:

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