【发布时间】:2019-10-14 00:28:40
【问题描述】:
我对应用程序开发相对较新,我正在尝试将持久性添加到使用 SwiftUI 编写的家庭作业管理应用程序中。我在我的“UserData”类中实现 NSCoding,并且能够毫无问题地创建编码函数,但是在我设置解码函数后,我在 self.init( ) 线。我的代码到底有什么问题?
class UserData: NSObject, NSCoding, ObservableObject {
// MARK:- Properties
@Published var assignments: [Assignment]
@Published var courses: [Course] = []
@Published var username: String = ""
@Published var appState: AppState = AppState(willPresentSplashScreen: false)
...
// MARK:- NSCoding
func encode(with coder: NSCoder) {
coder.encode(assignments, forKey: PropertyKey.assignments)
coder.encode(courses, forKey: PropertyKey.courses)
coder.encode(username, forKey: PropertyKey.username)
coder.encode(appState, forKey: PropertyKey.appState)
}
required convenience init?(coder decoder: NSCoder) {
let assignments = decoder.decodeObject(forKey: PropertyKey.assignments) as? [Assignment]
let courses = decoder.decodeObject(forKey: PropertyKey.courses) as? [Course]
let username = decoder.decodeObject(forKey: PropertyKey.username) as? String
let appState = decoder.decodeObject(forKey: PropertyKey.appState) as? AppState
self.init(assignments: assignments, courses: courses, username: username, appState: appState)
}
}
【问题讨论】: