[英]In XCODE / Swift, how can I create a single function which can be called from various view controllers?
我想实现一组函数,并在我的应用程序中由各种视图控制器调用它们。
这是最好的方法吗?
在整个应用程序中使用的函数的一个示例是将格式化的Float作为字符串返回:
func roundAndFormatFloat(floatToReturn : Float, numDecimalPlaces: Int) -> String{
let formattedNumber = String(format: "%.\(numDecimalPlaces)f", floatToReturn)
return formattedNumber
}
我建议创建一个名为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中实现。
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"
}
}
在Swift中创建Util类:
〔实施例:
导入UIKit导入基础
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函数,如:
if Util.get_IsUserLoggedIn(){
print("User is logged in")
}
else{
print("User is not logged in")
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.