336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Model을 만들어 사용할 때 아래 와 같은 에러가 나올 경우,
[ModelVO initWithCoder:]: unrecognized selector sent to instance
한번 에러 나는 모델 소스가 아래와 같이 되어 있는지 확인 바란다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import Foundation class ModelVO : NSObject { var num: Int var title: String init(qno: Int, question: String, answered: Int){ self.num = qno self.title = question self.answered = answered } required init(coder aDecoder: NSCoder) { self.num = aDecoder.decodeInteger(forKey: "num") self.title = aDecoder.decodeObject(forKey: "title") as! String } func encodeWithCoder(_ aCoder: NSCoder!) { aCoder.encode(self.num, forKey: "num") aCoder.encode(self.question, forKey: "title") } } | cs |
위 소스에서 문제점은 encodedWithCoder 이다.
NSCoding을 상속 받고, encode 함수를 오바라이딩 받습니다.
그럼 소스가 아래와 같이 변경이 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import Foundation class ModelVO : NSObject, NSCoding { var num: Int var title: String init(qno: Int, question: String, answered: Int){ self.num = qno self.title = question self.answered = answered } required init(coder aDecoder: NSCoder) { self.num = aDecoder.decodeInteger(forKey: "num") self.title = aDecoder.decodeObject(forKey: "title") as! String } func encode(with aCoder: NSCoder) { aCoder.encode(self.num, forKey: "num") aCoder.encode(self.title, forKey: "title") } } | cs |
아카이빙을 항상 NSObject 와 NSCoding을 함께 쓴다고 생각 하면 될 듯 하다.
참고하세요.
'나의 플랫폼 > iOS' 카테고리의 다른 글
[iOS] UITableView scroll to top (0) | 2017.10.27 |
---|---|
[iOS] change TableHeaderView height dynamically with autolayout (0) | 2017.10.26 |
[iOS] LocalNotification (0) | 2017.09.29 |
[iOS] Swift defer 블록 (0) | 2017.09.14 |
[iOS] 'command + =' 단축키 (0) | 2017.09.13 |