2017-03-28 11 views
1

데이터 저장과 관련하여 머리를 감싸는 데 약간의 문제가 있습니다. 최소한 원시 타입을 가진 간단한 클래스가 있다면 NSCoding (인코더와 디코더) 만 필요하다는 것을 알았습니다. 하지만 같은 클래스에 2 개의 다른 객체가있는 메인 클래스가 있으며이를 유지하는 방법이 너무 명확하지 않습니다. 메인 클래스의Swift에서 다른 클래스를 포함하는 클래스 개체를 저장하는 방법 (계속)

예 :

class MainClass { 
    var name: String 
    var description: String 
    var objectA: CustomClass 
    var objectB: CustomClass 
    ... 
} 

내가 메인 클래스와 마찬가지로 동일한 인코딩을 구현해야겠습니까? 직렬화 가능하게 만드시겠습니까? 나는 그것을 어떻게 구할 것인가?

+0

당신이 내 대답을 시도해 봤어? 내 대답은 문제를 해결하는 데 도움이 되었습니까?하시기 바랍니다 그것에 대해 알려줘. –

답변

0

당신은 당신의 포함 된 클래스에 NSCoding를 구현해야하고 내가이 당신에게 도움이되기를 바랍니다이

class MainClass { 
    var name: String 
    var description: String 
    var objectA: CustomClass 
    var objectB: CustomClass 

    required init?(coder decoder: NSCoder) 
    { 
     super.init() 
     if let decodedObjectA = decoder.decodeObject(forKey: "objectA") as? CustomClass{ 
      self.objectA = decodedObjectA 
     } 
     if let decodedObjectB = decoder.decodeObject(forKey: "objectB") as? CustomClass{ 
      self.objectB = decodedObjectB 
     } 


    } 
} 

//MARK: NSCoding 
extension MainClass : NSCoding 
{ 
    func encode(with aCoder: NSCoder) { 
     aCoder.encode(self.objectA, forKey: "objectA") 
     aCoder.encode(self.objectB, forKey: "objectB") 
    } 
} 

을 할 수