2015-06-07 2 views
2

Как я могу попытаться развернуть и по желанию, у которых есть ресурс enum friendstate, я получаю сообщение об ошибке при попытке применить его в инструкции switch ниже? Произошла ошибкаEnum: Шкала коммутатора для переменных типа

Конец случая "добавлен" не найден в типе "friendState!"

(ошибка репликации для всех случаев)

Есть ли способ, чтобы исправить эту ошибку?

var usernameText : String! 
var UID : Int! 
var userDetails : UserState? 
var buttonText : String{ 
    switch(userDetails!.state){ 
    case .added: 
     return "remove"//error occurs 
    case .incoming: 
     return "accept"//error occurs 
    case .outgoing: 
     return "cancel"//error occurs 
    } 

} 

func setup(){ 
    ActButton.setTitle(buttonText, forState: .Normal) 
} 


enum friendState : Int,Printable{ 

case incoming,added,outgoing 

var description : String{ 
    switch(self){ 
    case .incoming: 
     return "incoming" 
    case .added: 
     return "Friends" 
    case .outgoing: 
     return "outgoing" 
    } 
    } 
} 


class UserState : Printable , Hashable{ 
var uid : Int! 
var username : String 
var isFollowing : Bool 
var state : friendState! 
var RequestForUser : Request? 

init(username : String, isFollowing : Bool, state : friendState, uid :Int){ 
    self.username = username 
    self.isFollowing = isFollowing 
    self.state = state 
    self.uid = uid 
} 

var hashValue : Int { 
    get{ 
     return uid 
    } 
} 

var description : String{ 
    return "UserName: \(username) Following : \(isFollowing) Association: \(state) \n" 
} 

}

+0

Где находится UserState? – Laurent

+0

Просто добавлено определение Userstate. Он определяется как собственный класс – MooCow

ответ

2

В функции var buttonText : String

Просто измените строку:

switch(userDetails!.state) 

с

switch(userDetails!.state!) 

Вам нужно разворачивать UserDetails факультативные государство.

+0

! также необязательно? также Спасибо – MooCow

+0

Вы можете добавить '!' в коммутаторе или просто объявить состояние как «var state: friendState» без «!». Если вы отметили, что он был развернут, вам нужно явно указывать его, когда вы ссылаетесь на него. – Laurent