1
私は一般的にiOS開発に比較的新しいですが、私はこのアプリケーションをコーディングしています。SwiftのNSCodingはデータを正しくアーカイブしていませんか?
私はカスタムオブジェクト "Semester"、 "Course"、 "Assignments"を持っています。学期にはコースの配列が含まれ、コースには割り当ての配列が含まれます。私は学期とコース情報を適切にアーカイブすることができますが、何らかの理由で割り当て情報を読み取ることができません。
学期:
required init?(coder aDecoder: NSCoder) {
self.name = ""
super.init()
if let archivedName = aDecoder.decodeObject(forKey: "name") as? String {
name = archivedName
}
if let archivedCourses = aDecoder.decodeObject(forKey: "courses") as? [Course] {
courses = archivedCourses
}
}
func encode(with aCoder: NSCoder) {
aCoder.encode(name, forKey: "name")
aCoder.encode(courses, forKey: "courses")
}
コース:
required init?(coder aDecoder: NSCoder) {
self.name = ""
super.init()
if let archivedName = aDecoder.decodeObject(forKey: "courseName") as? String {
name = archivedName
}
if let archivedAssignments = aDecoder.decodeObject(forKey: "assignments") as? [Assignment] {
assignments = archivedAssignments
}
}
func encode(with aCoder: NSCoder) {
aCoder.encode(name, forKey: "courseName")
aCoder.encode(assignments, forKey: "assignments")
が割り当て:
required init?(coder aDecoder: NSCoder) {
self.name = ""
self.grade = 0
self.weight = 0
super.init()
if let archivedName = aDecoder.decodeObject(forKey: "assignmentName") as? String, let archivedGrade = aDecoder.decodeObject(forKey: "assignmentGrade") as? Int, let archivedWeight = aDecoder.decodeObject(forKey: "assignmentWeight") as? Int {
name = archivedName
grade = archivedGrade
weight = archivedWeight
}
}
func encode(with aCoder: NSCoder) {
aCoder.encode(name, forKey: "assignmentName")
aCoder.encode(grade, forKey: "assignmentGrade")
aCoder.encode(weight, forKey: "assignmentWeight")
}
私がなぜわからないが、私はしようとすると、割り当ての詳細を読むことができませんオブジェクトをデコードします。私は通常、あなたの問題に翻訳Int
if decoder.containsValue(forKey: "teamNumber"){
self.teamNumber = decoder.decodeInteger(forKey: "teamNumber")
}
をデコード
を助けていインクを解読する特別な方法 –
私の答えはあなたを助けましたか?どんなフィードバックもありがたいです。ありがとうございました –
はい!ご協力いただきありがとうございます!! –