Coredata Xcode 8中的“在实体的唯一性约束属性中,逗号不是有效属性”

Posted

技术标签:

【中文标题】Coredata Xcode 8中的“在实体的唯一性约束属性中,逗号不是有效属性”【英文标题】:"In the uniqueness constraints attribute for entity, comma is not valid property" in Coredata Xcode 8 【发布时间】:2016-11-09 09:57:50 【问题描述】:

我在 ios 上使用 Core Data 创建了一个数据库。我最初在我的Conversation 实体中设置了一个唯一约束。但是,删除它后,我收到一个错误:“在实体对话的唯一性约束属性中,逗号不是有效属性”

我查看了 DataModel.xcdatamodeld 中的每个字段,但找不到任何解决方案。

【问题讨论】:

【参考方案1】:

如果您之前为您的实体设置了任何约束(使用属性名称),后来如果您删除/重命名了该特定属性,那么它将引发此类错误。您需要根据您的数据模型业务流程双击该约束属性来重命名或删除它。

参考截图。

【讨论】:

【参考方案2】:

我在使用 Xcode 8.1 时遇到了同样的问题。我不想删除在所有 6 个实体上痛苦地设置的所有属性,并找到了另一个解决方案。假设您的模型文件名为“foobar.xcdatamodeld”。

    直接在模型中编辑 XML。为此,您需要访问模型文件中的文件“内容”。它的路径是:foobar.xcdatamodeld/foobar.xcdatamodel/contents。要在 Finder 中找到它,请按住 Control 键单击“xcdatamodeld”包以“显示包内容”,然后再次单击“xcdatamodel”包。然后,您可以将文件“内容”拖到您选择的文本编辑器中。您将看到约束在 XML 中显示如下:

    <uniquenessConstraints>
        <uniquenessConstraint>
            <constraint value="property_name"/>
        </uniquenessConstraint>
    </uniquenessConstraints>
    

您可以编辑“property_name”以匹配新值,或完全删除约束。

    编辑后,尝试清理并重新编译。在我的情况下,错误仍然存​​在,所以我不得不用 Xcode 做一点“重命名舞”。我从 Xcode 项目中删除了模型,然后将模型文件重命名为不同的名称(包括“xcdatamodeld”文件中的“xcdatamodel”文件),并将其添加回 Xcode。我又用旧名字重复了一遍,所以我又回到了最初的名字。

【讨论】:

我在上面遇到了类似的问题。我关闭了 Xcode 8.2.1 并打开了 Contents 文件,却发现没有 uniquenessConstraints 存在。重新打开 Xcode 后,问题就消失了。【参考方案3】:

它看起来像 Xcode 8 中的一个错误。我已经从实体中删除了所有属性,清理了项目,然后再次添加了属性。之后,错误消失了。也许这会对某人有所帮助。

【讨论】:

【参考方案4】:

我检查了 XML 文件并注意到“逗号、分隔、属性”在 XML 中。我使用 Product->Clean (command+shift+K) 来清理项目。清洁本身并没有帮助。然后我尝试了 File->Save (command+S)。

文件->保存更新了 XML 并为我清除了情况。

【讨论】:

以上是关于Coredata Xcode 8中的“在实体的唯一性约束属性中,逗号不是有效属性”的主要内容,如果未能解决你的问题,请参考以下文章

CoreData 适用于我的模拟器,但不适用于使用 xCode 6 的 iOS 8 Swift 中的 iPhone

xcode 8.3.2 coredata使用

使用 XCode 8 中 Core Data 生成的类创建对象数组

Xcode 7 中的 CoreData 类

Xcode 8.1 UIDataSourceModelAssociation 坏了?

xcode/ios/coredata:添加新记录后,tableview 中的最后一条记录显示两次