2014-11-12 3 views
0

NSCoding으로 객체를 유지하려고하지만 항상 얻으려고합니다 BAD_ACCESS ERROR 변수 multiple과 같은 다중을 방지하려면 모든 공통 변수를 RObject에 넣으십시오. 나는 init에 뭔가 잘못된 것을했다고 생각하지만 나는 무엇을 모른다.Swift NSObject 서브 클래스 가져 오기 BAD_ACCESS

오류가

func parseInfo(allInfos : String) -> Void { 

    if let all : JSON = JSON.parse(allInfos) as JSON? { 
     if let info = all.asArray 
     { 
      for description in info 
      { 
       var track : RInfo = SCTracks(js: description) 
       self.arrayTracks.addObject(track) 
      } // Therad 1: EXC_BAD_ACCESS(code=2, address=0x27...) 
     } 
    } 
} 

로그는 상속 어떤 일

내 일반적인 클래스

class RObject : NSObject, NSCoding { 

    var id  : Int? = 0 
    var kind : String? 

    override init() { super.init() } 

     init(js :JSON) { 
     self.kind    = js["kind"].asString 
     self.id     = js["id"].asInt 
     super.init() 
    } 

    required 
    init(coder aDecoder: NSCoder) { 
     self.id = aDecoder.decodeIntegerForKey("id") as Int 
     self.kind = aDecoder.decodeObjectForKey("kind") as? String 
    } 

    func encodeWithCoder(aCoder: NSCoder) { 
     aCoder.encodeInteger(self.id!, forKey: "id") 
     aCoder.encodeObject(self.kind, forKey: "kind") 
    } 
} 

내 클래스 Rinfo를 표시하지 않습니다이 기능에 thow했다 주제 :

class RInfo : RObject { 

    var title    :String? 
    var uri     :String? 
    var license    :String? 
    var release    :String? 
    var user    :RUser! 

    override init() { super.init() } 

    required init(coder: NSCoder) { 
     self.title   = coder.decodeObjectForKey("title") as? String 
     self.user   = coder.decodeObjectForKey("user") as RUser 
     self.license  = coder.decodeObjectForKey("license") as? String 
     self.uri   = coder.decodeObjectForKey("uri") as? String 
     self.release  = coder.decodeObjectForKey("release") as? String 
     super.init(coder: coder) 
    } 


    init(js :JSON) { 
     self.user    = js(js: js["user"]) 
     self.title    = js["title"].asString 
     self.license   = js["license"].asString 
     self.uri    = js["uri"].asString 
     self.release   = js["release"].asString 
     super.init(js: js) 
    } 

    override func encodeWithCoder(encoder: NSCoder) { 
     encoder.encodeObject(self.title,   forKey: "title") 
     encoder.encodeObject(self.user,    forKey: "user") 
     encoder.encodeObject(self.uri,    forKey: "uri") 
     encoder.encodeObject(self.license,   forKey: "license") 
    } 
} 

어떤 도움을 주셔서 감사합니다!

+1

크래시 로그 란 무엇인가? 오류가 발생한 것에 대해 더 많은 정보를 제공합니다. – Anorak

+0

더 많은 정보 추가 – Armanoide

+0

충돌하는 함수가 주어진 코드의 나머지 부분과 어떤 관련이 있는지 알 수 없습니다. –

답변

0

나는 변수 releaseRInfo에 제거하여 문제를 해결합니다. 그 이상한

관련 문제