描述图像集“BG_Email_Textfield.imageset”的 Contents.json 必须以顶级字典开头。
我们如何解决这个问题?
合并冲突时经常出现这种情况,您可以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"
}
}
当您转到“xcassets”时,您的图像未签名。制作新的图像集并将图像分配给该图像集并删除未签名的图像集。我希望你的问题得到解决。
如果您使用 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-资产目录
我删除了 Images.xcassets 中的所有内容,然后在 xcode 中选择不使用资产目录。
是的,有点晚了,但是我刚刚遇到了这个问题,并认为它可能对 OP 或下一个遇到相同问题的读者仍然有用。
文森特的答案绝对是一个解决方案,假设 OP 确实在使用版本控制并且存在合并冲突。OP也没有建议。
如果资产目录是唯一的选择,并且遵循可怕的“你为什么要这样做......而不是这样做”范式,lbsweek 的答案并不是真正的解决方案。
因此,我将扩展 beepscore 所说的内容。尽管 beepscore 的答案解释了Contents.json
文件是什么以及它与添加到目录中的图像的关系,但它没有解释可能导致 OP 描述的问题的原因,也没有解释如何解决它。
Contents.json
当文件无法解析时,很可能会显示此错误。这可能是由于某些明显的原因,例如文森特描述的文件中放置了合并冲突字符,或者可能是更微妙的原因,例如编码问题(有趣的不可见字符等)。
解决此问题的一种方法是备份 finder 中的 .xcassets 文件夹,让 Xcode 通过 IDE 生成它,然后Contents.json
使用备份版本作为指导修改生成的文件。
对我来说,事实证明 Mac OS TextEdit 使用智能双引号而不是常规双引号,并且 XCode 在我手动编辑后无法解析 Constents.json 文件。所以我在 Mac OS Settings->Keyboard->Text 下修复了这个问题,取消选中“使用智能引号和破折号”,并在“for Double Quotes”选项中选择与 XCode 期望匹配的适当双引号。对我来说,这是最底层的选择。