【发布时间】:2018-09-01 07:48:27
【问题描述】:
我一直在使用我的第一个应用程序,但现在我需要保存用户数据,但不能。我有一个对象数组,里面还有一个“问题”对象数组:
struct Question {
let question: String
let answer: String
}
struct UserEntry {
let date: String
let questions: [Question]
}
let userEntry = [UserEntries(date: todayDate, questions: [Question(answer: mood), Question(question: q1Text, answer: q1Answer), Question(question: q2Text, answer: q2Answer)])]
但是,这会引发错误:无法将类型“ThisViewController.Question”的值转换为预期的元素类型“UserEntries.Question”。在另一个堆栈答案之后也为它创建了一个类:
class UserEntries: NSObject, NSCoding {
struct Question {
var question: String
var answer: String
}
var date: String
var questions: [Question]
init(date: String, questions: [Question]) {
self.date = date
self.questions = questions
}
required convenience init(coder aDecoder: NSCoder) {
let date = aDecoder.decodeObject(forKey: "date") as! String
let question = aDecoder.decodeObject(forKey: "questions")
self.init(date: date, questions: question as! [UserEntries.Question])
}
func encode(with aCoder: NSCoder) {
aCoder.encode(date, forKey: "date")
aCoder.encode(questions, forKey: "questions")
}
}
我是这样保存数据的:
let encodedData: Data = NSKeyedArchiver.archivedData(withRootObject: userEntry)
UserDefaults.standard.set(encodedData, forKey: "allEntries")
我对出了什么问题感到非常困惑,非常感谢任何帮助或指导!
【问题讨论】:
标签: ios swift object nsuserdefaults