我知道这已经在很多其他方面进行了讨论,但我尝试使用以前的答案并且仍然坚持这个问题超过一周。
我正在尝试从一个plist文件中收集问题(带有唯一的问题ID),然后将该问题ID与用户的答案保存到另一个plist中。
我在加载问题时没有问题,但以下代码似乎没有更新AnsweredQs plist文件。
它打印“true”表示写入有效,但当我返回xcode时,plist没有变化。
func documentFilePath(fileName: String) -> String {
let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let fileURL = documentsURL.appendingPathComponent(fileName)
return fileURL.path
}
func saveQuestion(ans: String) {
let path = documentFilePath(fileName: "AnsweredQs.plist")
let data = NSMutableDictionary()
data.setValue(QuestionView.questionID, forKey: "id")
data.setValue(ans, forKey: "answer")
data.setValue(Date(), forKey: "date")
data.setValue(loadQuestionData(id: QuestionView.questionID).expiry, forKey: "expiry")
data.setValue(loadQuestionData(id: QuestionView.questionID).maxAge, forKey: "max-age")
let didWriteSucess = data.write(toFile: path, atomically: false)
print(didWriteSucess)
print(data)
}
除此之外,我想在问题随机生成时设置检查,以便只选择未回答的问题供用户回答。我已经开始研究这个问题了(虽然这段代码还不完整),但它似乎没有在AnsweredQs plist中找到任何内容,进一步表明保存实际上并没有起作用。
func checkQuestion(id: Any) -> Bool {
var trueOrFalse = Bool()
if QuestionView.questionNumber >= 1 {
var questionDict: NSDictionary = [:]
if let url = Bundle.main.url(forResource:"AnsweredQs", withExtension: ".plist"),
let dict = NSDictionary(contentsOf: url) as? [String:Any] {
print(dict)
questionDict = dict as NSDictionary
let allValues = [questionDict]
if allValues.count != 0 {
if allValues.description == id as! String{
trueOrFalse = true
print("true\(allValues)")
} else {
trueOrFalse = false
print("false\(allValues)")
}
}
}
} else {
trueOrFalse = false
print("didn't check")
}
return(trueOrFalse)
这是我的第一个应用程序,我正试图自己解决这个问题,但我已经让自己陷入困境,以至于我所留下的只是问这里。
提前谢谢x