2016-07-12 5 views
0

이 내 LoginData 모델 클래스입니다 : 다른 언급Swift에서 init() 메소드가있는 클래스의 인스턴스를 만드는 방법은 무엇입니까?

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 

} 
+0

이 'var에 objLoginData = LoginData 같은 시도 (fromJson : JSON)' [추가 정보를 위해] (http://www.tutorialspoint.com/swift/swift_initialization.htm)의 매우 혼란스러운 디자인의 – Chandan

+1

을 이니셜 라이저. 실패 할 때'nil'을 리턴하는 fails 이니셜 라이저 ('init? (...'))를 생성하거나 인스턴스를 생성하기 전에 JSON을 체크하고 non-optional 타입을 사용하십시오. – vadian

+0

내가 이걸 시도하면 var objLoginData = LoginData (fromJson : json), json을 선언 할 필요가있다. @ Chandan Prajapati – GuganReddy

답변

1

,이 초기화가 failable해야한다 : 나는 아래 클래스의 클래스 인스턴스를 생성 할

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

. 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 매개 변수를 사용하여 초기화.

+0

같은' SwiftyJSON' 라이브러리는 선택 사항이 아닙니다 – vadian

+0

@vadian 오 오케이. 적절하게 편집 해 주실 수 있습니까? – Alexander

+0

죄송합니다. 근본적으로 다른 게시물의 코드를 편집하지 않으며 OP의 요청에 따라 전달 된 JSON이 선택 사항이므로이 경우 어렵습니다. – vadian