2014-11-12 1 views
0

Я пытаюсь сохранить свой объект с помощью NSCoding, но я всегда получаю BAD_ACCESS ERROR Чтобы избежать многократной подобной переменной, class, я помещаю всю общую переменную в 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, который наследуется от RObject

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

i add more info – Armanoide

+0

Я не вижу, как функция сбоя связана с остальной частью данного кода. –

ответ

0

I Решите мою проблему, удалив переменную release в RInfo. что странно

 Смежные вопросы

  • Нет связанных вопросов^_^