Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 属性闭包无法查看我的单例共享属性_Swift_Macos_Singleton_Closures - Fatal编程技术网

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语句中展开它