swift - Nonfailable enum initializer with default value -


is there way define enum, when initialized rawvalue default value instead of failing? useful in cases value may unexpected (i.e. server api errors)

you mean that?

enum errorcode: int {     case noerr = 0, err1, err2, lasterr, defaulterr      init(value: int) {         if (value > lasterr.rawvalue) {             self = .defaulterr         } else {             self = errorcode(rawvalue: value)!         }     } }  let error: errorcode = .lasterr let anothererror: errorcode = errorcode(value: 99) 

here variation:

enum errorcode: int {     case noerr = 0, err1, err2, lasterr      init?(value: int) {         if (value > 3) {             return nil         } else {             self = errorcode(rawvalue: value)!         }      } }  let error: errorcode = .lasterr let anothererror: errorcode? = errorcode(value: 99) 

which equivalent :

enum errorcode: int {     case noerr = 0, err1, err2, lasterr }  let anothererror: errorcode? = errorcode(rawvalue: 99) 

because apple doc stating:

note

the raw value initializer failable initializer, because not every raw value return enumeration member. more information, see failable initializers.

but in general, if want use enum rawvalue, should expect optional , treat nil returned value default error case outside enum definition. recommendation.


Comments

Popular posts from this blog

javascript - Bootstrap Popover: iOS Safari strange behaviour -

Magento/PHP - Get phones on all members in a customer group -

session - Logging Out Using PHP -