Swift中全局变量和函数的最佳实践是什么?

时间:2015-02-27 13:19:59

标签: ios swift

我用几个应用程序编写应用程序(15-25个不同的swigft文件,每个视图一个。 我将在每个viewcontroller中使用的一些变量和函数。 什么是启用代码重用的最佳做法?

例如,我需要与第一个请求用于访问令牌的服务器通信,我想这个请求可能是设置全局变量(访问令牌)的全局函数。然后将其用于更具体的请求。

我开始在appdelegate文件中放置很多全局常量,在struct中有这个问题吗?

LibraryAPI.swift     导入UIKit     导入CoreData

class LibraryAPI: NSObject
{
let managedObjectContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext
private var loginD: LoginDetails
private var isOnline: Bool

class var sharedInstance: LibraryAPI
{
    struct Singleton
    {
        static let instance = LibraryAPI()
    }
    return Singleton.instance
}
override init()
{
    super.init()
}
func getIsOnline() -> Bool
{
    return isOnline
}
func setIsOnline(onlineStatus: Bool)
{
    isOnline = onlineStatus
}
func getLoginDetails() -> LoginDetails
{
    return loginD
}
func setLoginDetails(logindet: LoginDetails)
{
    loginD = logindet
}

// Execute the fetch request, and cast the results to an array of objects
if let fetchResults = managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [LoginDetails] {
   setLoginDetails(fetchResults[0])  
}

}

2 个答案:

答案 0 :(得分:0)

你可以这样做

User.swift

import Foundation
import UIKit

class User: NSObject {
    var name: String = ""

    func getName() -> String{
        name = "Nurdin"
        return name
    }

}

ViewController.swift

import Foundation
import UIKit

let instanceOfUser = User()
println(instanceOfUser.getName()) // return Nurdin

答案 1 :(得分:0)

您应该避免使用全局变量

根据您拥有的/您需要做的事情,您可以:

  • 创建一个类并在第一次调用时创建一个实例。然后,您可以通过视图(prepareForSegue)传递对象。但每次都可以重复实施;
  • 创建一个单例类,它只能实例化一次,并且可以从任何地方访问(单例被一些人认为是不好的做法);
  • 使用NSUserDefaults存储字符串;
  • 以某种方式保存您的数据(CoreData,...)。