스위프트 3에 넣으려고하는 다음 코드가 있습니다. super.encodeWithCoder(aCoder)
줄 문제가 있습니다. 내가하는 것은 무엇이든 오류를 준다. 내가 스위프트 3스위프트 3의 인코딩
로 변환하기 위해 노력하고있어
import Foundation
class ToDo: Task {
var done: Bool
@objc required init(coder aDecoder: NSCoder) {
self.done = aDecoder.decodeObjectForKey("done") as! Bool
super.init(coder: aDecoder)
}
@objc override func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(done, forKey: "done")
super.encodeWithCoder(aCoder)
}
init(name: String, done: Bool) {
self.done = done
super.init(name: name)
}
}
나는이
import Foundation
class ToDo: Task {
var done: Bool
@objc required init(coder aDecoder: NSCoder) {
self.done = aDecoder.decodeObject(forKey: "done") as! Bool
super.init(coder: aDecoder)
}
@objc override func encode(with aCoder: NSCoder) {
aCoder.encode(done, forKey: "done")
// THis line gives an error
super.encode(with aCoder)
}
init(name: String, done: Bool) {
self.done = done
super.init(name: name)
}
}
라인 super.encodeWithCoder(aCoder)
오류를 제공합니다. Swift는 아무런 메시지도 표시하지 않고 검색 결과가 없습니다. 의견 원래 코드 "super.encodeWithCoder (aCoder)"에 응답
편집에는 멤버 (aCoder와) 'encodeWithCoder'
super.encode이없는 유형 '작업'의 오류 값 오류 예상 부여합니다 제공 ';' 구분 기호
오류가 무엇입니까 :
올바른 기능 수익률에 코드를 변경? – shallowThought
이상한 코딩이긴하지만, 나는 이것을 무시하는 것에 익숙하지 않기 때문에 가능성이 높다. 나는 항상 IB에서 만들어진 뷰만 init (코더 :)를 사용한다고 생각했다. 즉, 두 가지가 나에게 뛰어 들었습니다. (1) 당신은 어떤 종류의 오류에 관한 세부 사항을 게시하지 않았습니다. (2) super.ecode (with : coder)를 호출하기 전에 일부 코드가 있기 때문에 빌드 오류가 발생할 수 있습니다. 보너스 : 방금 코드에 콜론이 누락 된 것을 보았습니다. 확실히 구축하지 않을 것이라고 확신합니다. – dfd
"'super.encodeWithCoder (aCoder)'줄에 오류가 있습니다." 그 선은 당신의 Swift 3 예제에는 존재하지 않습니다. 'super.encode (withCoder)'에 대한 호출이 컴파일에 실패했다는 것을 의미합니까? dfd가 가리키는 것처럼,'super.encode (with : aCoder)'가되어야하기 때문에 컴파일되지 않습니다. – Rob