当我在Swift中设置时,为什么Enum的价值没有变化?

时间:2015-01-09 02:47:10

标签: ios swift enums

我尝试将Enum值设置为变量,但是当我将其恢复时,变量的值没有改变。

代码如下:

CouchbaseEnum.swift 保存枚举值。

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

Couchbase.swift 定义setget值的函数。

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,为什么当我在Couchbase().setReplyStatus(CouchbaseEnum.ReplyStatus.LOGIN_SUCCESS);中呼叫ViewController.swift时价值没有变化?

提前致谢。

1 个答案:

答案 0 :(得分:1)

STATUS是类Couchbase的实例变量。 每次调用Couchbase()时,您都要创建类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");
}