Swift 中全局变量和函数的最佳实践是啥?
Posted
技术标签:
【中文标题】Swift 中全局变量和函数的最佳实践是啥?【英文标题】:What is best practice for global variables and functions in Swift?Swift 中全局变量和函数的最佳实践是什么? 【发布时间】:2015-02-27 13:19:59 【问题描述】:我用几个(15-25 个不同的 swigft 文件为每个视图编写一个应用程序)编写了一个应用程序。 我将在每个视图控制器中使用一些变量和函数。 启用代码重用的最佳做法是什么?
例如,我需要与第一个请求是访问令牌的服务器通信,我想这个请求可能是一个设置全局变量(访问令牌)的全局函数。然后将其用于更具体的请求。
我开始在 appdelegate 文件中放置很多全局常量,在 Struct 中这样做有问题吗?
图书馆API.swift 导入 UIKit 导入核心数据
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])
【问题讨论】:
对此没有一个答案。访问令牌的示例可能非常适合存储在钥匙串中而不是变量中,或者它可以是处理您的 api 的数据控制器中的局部变量等。 【参考方案1】:你应该避免使用全局变量。
取决于你拥有什么/你需要做什么,你可以:
在第一次调用时创建一个类并创建一个实例。然后,您可以通过您的视图传递对象 (prepareForSegue
)。但这仍然可以重复实施;
创建一个只实例化一次并且可以从任何地方访问的单例类(有些人认为单例是一种不好的做法);
使用NSUserDefaults
存储字符串;
以某种方式保存您的数据 (CoreData
, ...)。
【讨论】:
你有单例应用的例子吗?我特别怀疑如何建立连接和使用核心数据。 这是一个我用来播放声音的单例:pastebin.com/JPzaLhZd(对不起语法着色)。要使用它,您只需执行以下操作:例如SoundPlayer.sharedInstance.playSound()
(当然您还可以访问属性而不仅仅是方法)。
这可要了我的命 :-) 请您看一下问题中的更新代码。我从 LibraryAPI 类中检索属性没有问题。但是我应该在哪里以及如何将变量/属性连接到它们在核心数据中的对应项?如果有请举例说明。【参考方案2】:
你可以这样做
用户.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
【讨论】:
以上是关于Swift 中全局变量和函数的最佳实践是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL Server 中创建和管理全局 Procs 和 UDF 的最佳方法是啥?