为什么我在 Swift 中设置时 Enum 的值没有改变?

Why the value of Enum didn't change when I set in Swift?

我尝试将 Enum 值设置为一个变量,但是当我取回它时,变量的值并没有改变。

代码如下:

CouchbaseEnum.swift 保存枚举值。

class CouchbaseEnum{
    enum ReplyStatus{
        case NONE
        case LOGIN_SUCCESS
        case LOGIN_ERROR
        case LOGIN_RETRY
    }
}

Couchbase.swiftsetget 值定义函数。

class Couchbase {

    var STATUS = CouchbaseEnum.ReplyStatus.NONE;

    func setReplyStatus(status: CouchbaseEnum.ReplyStatus){
        STATUS = status;
    }

    func getReplyStatus() -> (CouchbaseEnum.ReplyStatus){

        return STATUS;
    }
}

ViewControler.swift 调用函数并将枚举值设置为变量。

@IBAction func login(sender: AnyObject) {

    Couchbase().setReplyStatus(CouchbaseEnum.ReplyStatus.LOGIN_SUCCESS);

    if(Couchbase().getReplyStatus() == CouchbaseEnum.ReplyStatus.LOGIN_SUCCESS){
        println("login---LOGIN_SUCCESS");
    }else if(Couchbase().getReplyStatus() == CouchbaseEnum.ReplyStatus.NONE){
        println("login---NONE");
    }
}

当我点击按钮时,它会调用 setReplyStatus 并发送 CouchbaseEnum.ReplyStatus.LOGIN_SUCCESS

但它总是显示 login---NONE ,为什么我在 ViewController.swift 中调用 Couchbase().setReplyStatus(CouchbaseEnum.ReplyStatus.LOGIN_SUCCESS); 时值没有改变?

提前致谢。

STATUS是classCouchbase的实例变量。 每次调用 Couchbase() 时,都会创建 class Couchbase 的新实例,每次创建新实例时,STATUS 都会设置为 CouchbaseEnum.ReplyStatus.NONE .而是使用像下面的代码这样的变量。

var cbase = Couchbase()
cbase.setReplyStatus(CouchbaseEnum.ReplyStatus.LOGIN_SUCCESS);

if(cbase.getReplyStatus() == CouchbaseEnum.ReplyStatus.LOGIN_SUCCESS){
    println("login---LOGIN_SUCCESS");
}
else if(Couchbase().getReplyStatus() == CouchbaseEnum.ReplyStatus.NONE){
    println("login---NONE");
}