【发布时间】:2021-09-30 18:55:22
【问题描述】:
我正在尝试从数据资产的 data 部分读取多个文件。我目前正在制作原型并将 json 文件直接写入 Asset Bundle 文件夹中,位于名为“CommonData.dataset”的文件夹下。 CommonData 在我的资产目录中正确设置为Data set。
一切正常,除了我只获取一个 json 文件的数据,即使我在 Contents.json 的数据部分列出了 2 个文件,这些文件记录为一组条目:
{
"data" : [
{
"filename" : "ATestFile.json",
"idiom" : "universal",
"universal-type-identifier" : "public.json"
},
{
"filename" : "AnotherTestFile.json",
"idiom" : "universal",
"universal-type-identifier" : "public.json"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
在这个调用之后,asset.data 只包含第一个文件的内容,第二个甚至不会被读取:
let asset = NSDataAsset(name: "CommonData", bundle: Bundle.main)
在我的生产代码中,我将引用 30 或 40 个 json 文件,不能将它们连接起来。我确定我遗漏了一些简单的东西 - 是否有我可以使用的迭代器或强制转换,或者我需要对 NSDataAsset 进行多次调用?
这两个引用文件的 json 格式正确顺便说一句,这不是逗号问题(很遗憾)。
【问题讨论】:
-
"在这个电话之后" 在什么电话之后?您没有显示任何代码进行任何调用。你能告诉我们你在做什么吗?请记住,您的工作是帮助我们重现问题。
-
对不起,如果不清楚,'after this call'是指冒号后面的代码(让asset = NSDataAsset(name:“CommonData”,bundle:Bundle.main))-asset !.data 仅包含 Contents.json 中引用的第一个文件的数据,您可以通过检查缓冲区长度来判断。我删除了所有其他代码,因为我已经确定这是失败的语句。
-
好吧,我想我的意思是,听起来您正在直接修改资产目录的基础内容。你是怎么做到的?
-
啊,好吧,直接写 json 就行了(这个练习是手工写的)。看着 Eugene Dudnyk 的回答,听起来我正在尝试将数组用于它不打算用于的东西。谢谢您的帮助。
-
是的,我以为您以某种方式实现了自动化。我认为答案是自动化是你需要做的。 :) 我很高兴有一些工具可以帮助你解决这个问题,但我希望这只是基本的脚本。