ios - Swift: Does not conform to protocol NSCoding -


i trying use nscoding protocol on class have written in swift, cannot seem figure out why compiler complains "does not conform protocol nscoding" when implement required methods:

class serverinfo: nsobject, nscoding {      var username = ""     var password = ""     var domain = ""     var location = ""     var serverfqdn = ""     var serverid = ""      override init() {      }      init(coder adecoder: nscoder!) {         self.username = adecoder.decodeobjectforkey("username") nsstring         self.password = adecoder.decodeobjectforkey("password") nsstring         self.domain = adecoder.decodeobjectforkey("domain") nsstring         self.location = adecoder.decodeobjectforkey("location") nsstring         self.serverfqdn = adecoder.decodeobjectforkey("serverfqdn") nsstring         self.serverid = adecoder.decodeobjectforkey("serverid") nsstring     }       func encodewithcoder(_acoder: nscoder!) {         _acoder.encodeobject(self.username, forkey: "username")         _acoder.encodeobject(self.password, forkey: "password")         _acoder.encodeobject(self.domain, forkey: "domain")         _acoder.encodeobject(self.location, forkey: "location")         _acoder.encodeobject(self.serverfqdn, forkey: "serverfqdn")         _acoder.encodeobject(self.serverid, forkey: "serverid")     }  } 

is bug or missing something?

as can see in detailed compiler messages in report navigator, methods not declared correctly:

 error: type 'serverinfo' not conform protocol 'nscoding' class serverinfo: nsobject, nscoding { ^ foundation.nscoding:2:32: note: protocol requires function 'encodewithcoder' type '(nscoder) -> void'   @objc(encodewithcoder:) func encodewithcoder(acoder: nscoder)                                ^ note: candidate has non-matching type '(nscoder!) -> ()'     func encodewithcoder(_acoder: nscoder!) {          ^ foundation.nscoding:3:25: note: protocol requires initializer 'init(coder:)' type '(coder: nscoder)'   @objc(initwithcoder:) init(coder adecoder: nscoder)                         ^ note: candidate has non-matching type '(coder: nscoder!)'     init(coder adecoder: nscoder!) { 

(this may have changed between beta releases.) in addition, initwithcoder method has marked required:

required init(coder adecoder: nscoder) {   }  func encodewithcoder(_acoder: nscoder) {   } 

in swift 3 required methods are

required init(coder adecoder: nscoder) {   }  func encode(with acoder: nscoder) {   } 

Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

jsf - How to ajax update an item in the footer of a PrimeFaces dataTable? -

django - CSRF verification failed. Request aborted. CSRF cookie not set -