gpt4 book ai didi

swift - 静态变量和函数问题

转载 作者:行者123 更新时间:2023-11-28 12:32:39 24 4
gpt4 key购买 nike

静态变量总是给出相同的值。为什么不总是调用该函数?

class SessionManager {
static func AddSession(key : String, value : Any) {
let session = UserDefaults.standard
if session.object(forKey: key) != nil {
session.removeObject(forKey: key)
}
session.setValue(NSKeyedArchiver.archivedData(withRootObject: value), forKey: key)

}

static func GetSessionValue(key : String) -> Any? {
let session = UserDefaults.standard
return NSKeyedUnarchiver.unarchiveObject(with: session.value(forKey: key) as! Data)
}

static var CurrentEmployee : Employee? = SessionManager.GetSessionValue(key: CL.SESSION__CURRENT_EMPLOYEE) as? Employee

}

SessionManager.CurrentEmployee 始终相同。

最佳答案

static var CurrentEmployee : Employee? = SessionManager.GetSessionValue(...) as? Employee

是一个存储(类型)属性,其初始值被评估正好一次,第一次访问属性时。

您想要的是一个带有 getter 的计算属性这是在每次访问时评估的:

static var CurrentEmployee : Employee? { return SessionManager.GetSessionValue(...) as? Employee }

独立示例:

class Foo {

static var currentNumber = 0

static func nextNumber() -> Int {
currentNumber += 1
return currentNumber
}

static var storedProp = nextNumber()

static var computedProp: Int { return nextNumber() }
}

print(Foo.storedProp) // 1
print(Foo.storedProp) // 1
print(Foo.storedProp) // 1

print(Foo.computedProp) // 2
print(Foo.computedProp) // 3
print(Foo.computedProp) // 4

print(Foo.storedProp) // 1

关于swift - 静态变量和函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41689430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com