描述图像集“BG_Email_Textfield.imageset”的Contents.json必须以顶级词典开头。
我们如何解决这个问题?
答案 0 :(得分:5)
这种情况经常发生在合并冲突时,您可以在Finder中打开YourImageName.imageset
文件夹并编辑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"
}
}
答案 1 :(得分:0)
如果您使用Xcode将单个图像作为图像集添加到项目中,Xcode会创建一个包含两个文件的子目录 - 图像和Contents.json文件。 你可以在Finder中看到这个。在Xcode项目目录中打开Images.xcassets。 例如,Images.xcassets可以有一个子目录myImage.imageset with myImage.png和一个类似于
的Contents.json{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "myImage.png"
},
{
"idiom" : "universal",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
您可以为2x分辨率指定另一张图像。 如果您的项目不包含与此类似的目录和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-developer-managing-images-xcode-5-asset-catalogs
答案 2 :(得分:0)
我删除Images.xcassets中的所有内容,然后在xcode中选择不使用资产目录。
答案 3 :(得分:0)
有点晚了是的,但是我刚刚遇到这个问题并且认为对于OP或下一个具有相同问题的读者来说它可能仍然有用。
Vincent的答案绝对是一个解决方案,假设OP确实使用版本控制并且存在合并冲突。 OP没有建议。
lbsweek的回答并不是真正的解决方案,如果资产目录是唯一的选择,而且还要遵循可怕的“你为什么这样做呢......”这样做而不是&#39;范例
所以我将扩展beepscore的内容。虽然beepscore的答案解释了Contents.json
文件是什么以及它与添加到目录中的图像有什么关系,但它没有解释可能导致OP描述的问题的原因,也没有解释如何解决它。
当无法解析Contents.json
文件时,很可能会显示此错误。这可能是由于一些显而易见的事情,例如文档中描述的合并冲突字符放在文件中,或者它可能是更微妙的东西,例如编码问题(有趣的隐形字符等)。
解决此问题的一种方法是在finder中备份.xcassets文件夹,让Xcode通过IDE生成它,然后使用备份版本作为指南修改生成的Contents.json
文件
答案 4 :(得分:0)
对我来说,事实证明Mac OS TextEdit使用智能双引号而不是常规双引号,并且在我手动编辑后,XCode无法解析Constents.json文件。所以我在Mac OS设置 - &gt;键盘 - &gt;文本取消选中&#34;使用智能引号和破折号&#34;在&#34;对于Double Quotes&#34; options选择与XCode期望的匹配的适当双引号。对我而言,这是最底层的选择。