2014-10-08 46 views
10

我想实现一组函数,并在我的应用程序中由各种视图控制器调用它们。在XCODE/Swift中,如何创建一个可以从各种视图控制器调用的函数?

这是最好的方法是什么?

整个应用程序中使用的函数的例子是这样的一个,它返回一个格式化的浮动为一个字符串:

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

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

} 
+0

你的问题太模糊 - 提供有关职能应该做什么一些例子。他们应该处理视图控制器包含/处理的数据吗?还是通过它的观点? – Antonio 2014-10-08 19:24:31

+3

你有没有考虑过类方法?还是单身? – Clafou 2014-10-08 19:28:07

+0

我已经更新了这个问题,以包括一个示例函数,需要在整个应用程序Antonio的各种视图中使用。 Clafou,我从来没有听说过一个单例,但我可以在一个类中实现该函数,并让该类返回已经格式化的浮动。好主意! – user3535074 2014-10-08 19:35:31

回答

27

我建议创建一个名为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中实现。

+1

这太棒了。我希望能够创建一个单独的文件。非常感谢。 – user3535074 2014-10-08 19:43:24

+0

这对我来说非常完美,我给它一个凹凸。但是我想知道Util应该代表什么?我的想法是实用? – 2016-06-06 20:42:48

+0

是或实用程序。 – DrOverbuild 2016-09-26 17:16:31

0

创建的Util类斯威夫特:

  1. 创建名为新文件的Util
  2. 创建一个类功能:类FUNC funtionname :() - > {}

〔实施例:

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功能中的任何类文件 像:

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

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

雨燕的办法就是延长UIViewController并添加功能存在。

斯威夫特3示例:

extension UIViewController { 

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

     return formattedNumber 
    } 

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

} 
相关问题