gpt4 book ai didi

ios - 将嵌套字典写入 plist 时的类型问题 (Swift)

转载 作者:行者123 更新时间:2023-11-28 08:31:15 26 4
gpt4 key购买 nike

我正在尝试在 Swift 中编写一个包含多层嵌套到进度列表 (plist) 的字典。但是,由于某种原因,当我检查 plist 时,其中一个词典被视为一个数组,导致我的项目出现一系列类型问题。

这是原始的嵌套字典:

我附上了一张显示 plist 结构的屏幕截图和另一张显示原始数据结构的屏幕截图,我知道你不是要显示代码照片,但这个文本编辑器没有正确格式化它并且滥用了尖括号

original data structure

screenshot showing plist

更新

好的,我在最顶层又添加了一对键值对,并且它被正确地写入了字典。我现在遇到的问题是我可以很好地写入 plist,但是当我尝试从中读取时,我得到的是零。

func initializeProgress() {
let directories = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)

if let documents = directories.first {
if let urlDocuments = NSURL(string: documents) {
let urlProgress = urlDocuments.URLByAppendingPathComponent("progress.plist")
let progressDict = NSDictionary(dictionary: ["AP Biology": ["Misc": ["correct": 0, "incorrect": 0, "totalInSection": 0, "percentDone": 0],
"Basics": ["correct": 0, "incorrect": 0, "totalInSection": 0, "percentDone": 0],
"Essential Chemistry": ["correct": 0, "incorrect": 0, "totalInSection": 0, "percentDone": 0],
"Molecules of Life": ["correct": 0, "incorrect": 0, "totalInSection": 0, "percentDone": 0]]])
progressDict.writeToFile(urlProgress.path!, atomically: true)

}

}

func retrieveAndSetProgress() {
let directories = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)

let documents = directories.first
let urlDocuments = NSURL(string: documents!)
let urlProgress = urlDocuments!.URLByAppendingPathComponent("progress.plist")
print(NSDictionary(contentsOfURL: urlProgress))
let data = NSData(contentsOfURL: urlProgress, options: NSDataReadingOptions())
print(data)
progress = NSDictionary(contentsOfURL: urlProgress)! as! Dictionary<String, Dictionary<String, Dictionary<String, Int>>>

}

progress 是一个全局变量,第二个方法的最后一行产生错误:fatal error: unexpectedly found nil while unwrapping an Optional value

最佳答案

改变

print(NSDictionary(contentsOfURL: urlProgress))

print(NSDictionary(contentsOfFile: urlProgress.absoluteString))

然后它就可以读取它了。我刚在 Playground 上测试过

关于ios - 将嵌套字典写入 plist 时的类型问题 (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38838716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com