Swift 属性闭包无法查看我的单例共享属性
我决定在类中获取属性值时使用闭包,但该值取决于单个值记录的用户名Swift 属性闭包无法查看我的单例共享属性,swift,macos,singleton,closures,Swift,Macos,Singleton,Closures,我决定在类中获取属性值时使用闭包,但该值取决于单个值记录的用户名 class BrokerTVC: NSViewController, DBTable { @IBOutlet weak var table: NSTableView! var mainRequest = { () -> String in switch LoggedUser.shared.type{ case LoggedUser.shared.admin: return "select
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"
}}
不知何故,这个闭包无法识别LoggedUser类型的单例值的共享属性,因为它没有admin。我是否遗漏了闭包工作原理的一些核心原则?闭包一切正常。 似乎角色是一个可选的枚举值-所以您应该这样做
var mainRequest = { () -> String in
if let type = LoggedUser.shared.type {
switch type {
case .admin:
case .client:
default: return ""
}
}
return ""
}}
原因是因为singleton属性类型是可选类型,所以我必须在switch语句中展开它