如何在Swift中创建具有init()方法的类的实例?

时间:2016-07-12 15:55:23

标签: json swift alamofire mvcc

这是我的LoginData Model Class:

class LoginData
{
    var sessionToken : String!
    init(fromJson json: JSON!)
    {
    if json == nil
     {
      return 
     }
    sessionToken = json["Session_Token"].stringValue
   }
}

我想在下面的类中为该类创建实例:

  class Confirm
{
 var modelobj = model()
   // If I used to create instance I got error like this( **Missing argument for parameter 'fromJson' in call**) and how to create instance for this class

}

1 个答案:

答案 0 :(得分:1)

正如其他人所说,这个初始化程序应该是可用的。 sessionToken不再需要是隐式解包的可选项(String!)。我还将代码格式化为Swift的惯例。

class LoginData {
    var sessionToken: String

    init?(fromJson json: JSON) {
        guard let sessionToken = json["Session_Token"].stringValue else {
            return nil
        }

        self.sessionToken = sessionToken
    }
}

然后用:

实例化它
guard let loginData = LoginData(fromJson: someJson) else {
    //Initializer failed. Recover from error here.
    //Must break, return, or call @noreturn function
}

//use loginData

必须使用json参数调用初始化程序,因为没有没有参数的初始化程序。