В 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")
}