2

描述图像集“BG_Email_Textfield.imageset”的 Contents.json 必须以顶级字典开头。

我们如何解决这个问题?

4

6 回答 6

8

合并冲突时经常出现这种情况,您可以YourImageName.imageset在Finder中打开文件夹并编辑Contents.json,删除代码冲突。

就我而言,我合并这样的冲突文件:

{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "scale" : "2x",
      "filename" : "BodySelfieTabbarItem@2x.png"
    }
  ],
  "info" : {
    "version" : 1,
<<<<<<< HEAD
    "author" : "xcode",
    "template-rendering-intent" : "original"
=======
    "author" : "xcode"
>>>>>>> f15823d967d53508370cfcbd708e15ee2fad328e
  }
}

像这样删除代码冲突后:

{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "scale" : "2x",
      "filename" : "BodySelfieTabbarItem@2x.png"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode",
    "template-rendering-intent" : "original"
  }
}
于 2014-08-18T05:56:27.523 回答
1

当您转到“xcassets”时,您的图像未签名。制作新的图像集并将图像分配给该图像集并删除未签名的图像集。我希望你的问题得到解决。

于 2015-08-25T08:20:22.083 回答
0

如果您使用 Xcode 将单个图像作为图像集添加到项目中,Xcode 会创建一个包含两个文件的子目录——图像和 Contents.json 文件。您可以在 Finder 中看到这一点。在您的 Xcode 项目目录中打开 Images.xcassets。例如,Images.xcassets 可以有一个 myImage.imageset 子目录,其中 myImage.png 和 Contents.json 类似于

{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x",
      "filename" : "myImage.png"
    },
    {
      "idiom" : "universal",
      "scale" : "2x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

您可以为 2 倍分辨率指定另一个图像。如果您的项目不包含与此类似的目录和 Contents.json 文件,则使用 Xcode 添加图像集可能是最简单的。在 Xcode 项目导航器中,如果您选择 Images.xcassets,则会在底部出现一个带有小“+”的窗格,以“添加组或图像集”。

参考
https://developer.apple.com/library/ios/recipes/xcode_help-image_catalog-1.0/AddingImageSets/AddingImageSets.html
https://www.iphonelife.com/blog/31369/unleash-your-inner-app-开发人员管理图像-xcode-5-资产目录

于 2014-03-03T05:00:35.480 回答
0

我删除了 Images.xcassets 中的所有内容,然后在 xcode 中选择不使用资产目录。

于 2014-05-10T20:12:08.093 回答
0

是的,有点晚了,但是我刚刚遇到了这个问题,并认为它可能对 OP 或下一个遇到相同问题的读者仍然有用。

文森特的答案绝对是一个解决方案,假设 OP 确实在使用版本控制并且存在合并冲突。OP也没有建议。

如果资产目录是唯一的选择,并且遵循可怕的“你为什么要这样做......而不是这样做”范式,lbsweek 的答案并不是真正的解决方案。

因此,我将扩展 beepscore 所说的内容。尽管 beepscore 的答案解释了Contents.json文件是什么以及它与添加到目录中的图像的关系,但它没有解释可能导致 OP 描述的问题的原因,也没有解释如何解决它。

Contents.json当文件无法解析时,很可能会显示此错误。这可能是由于某些明显的原因,例如文森特描述的文件中放置了合并冲突字符,或者可能是更微妙的原因,例如编码问题(有趣的不可见字符等)。

解决此问题的一种方法是备份 finder 中的 .xcassets 文件夹,让 Xcode 通过 IDE 生成它,然后Contents.json使用备份版本作为指导修改生成的文件。

于 2015-05-20T07:14:16.133 回答
0

对我来说,事实证明 Mac OS TextEdit 使用智能双引号而不是常规双引号,并且 XCode 在我手动编辑后无法解析 Constents.json 文件。所以我在 Mac OS Settings->Keyboard->Text 下修复了这个问题,取消选中“使用智能引号和破折号”,并在“for Double Quotes”选项中选择与 XCode 期望匹配的适当双引号。对我来说,这是最底层的选择。

于 2015-05-22T14:43:14.087 回答