在我的类中获取属性值时,我决定使用闭包,但此值取决于单例值(记录的用户名)。
PYTHONPATH
不知何故,此闭包不识别此单例的class BrokerTVC: NSViewController, DBTable {
@IBOutlet weak var table: NSTableView!
var mainRequest = { () -> String in
switch LoggedUser.shared.type{
case LoggedUser.shared.admin:
return "select * from broker where approved = true"
case LoggedUser.shared.client:
return "select * from broker where approved = true and ..."
default: return ""
}
return ""
}}
class LoggedUser{
var type: Roles?
var iD: String
var username: String
static let shared = LoggedUser()
private init(){
type = .admin
iD = "(xx, xxxxxx)"
username = "root"
}}
属性(类型的值&#34; LoggedUser&#34;没有&#34; admin&#34; < /强>)。我是否错过了闭包如何工作的一些核心原则?
答案 0 :(得分:1)
关闭时一切都很好。
似乎Roles
是一个可选的枚举值 - 所以你应该这样做。
var mainRequest = { () -> String in
if let type = LoggedUser.shared.type {
switch type {
case .admin:
case .client:
default: return ""
}
}
return ""
}}