【问题标题】:NSDataAsset() only returning one json file when there are 2 specifiedNSDataAsset() 仅在指定 2 个时返回一个 json 文件
【发布时间】: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 的回答,听起来我正在尝试将数组用于它不打算用于的东西。谢谢您的帮助。
  • 是的,我以为您以某种方式实现了自动化。我认为答案是自动化是你需要做的。 :) 我很高兴有一些工具可以帮助你解决这个问题,但我希望这只是基本的脚本。

标签: ios json swift assets


【解决方案1】:

该数组以资产 json 格式存在,以适应不同的特征。 IE。您可以在数据数组中拥有两个文件描述,一个用于亮模式,一个用于暗模式等。您不能同时访问多个具有相同特征的文件描述。

【讨论】:

  • 谢谢尤金,看起来我正在尝试弯曲它。我会找到另一个解决方案。
猜你喜欢
  • 2015-08-13
  • 2017-03-06
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
相关资源
最近更新 更多