【问题标题】:Why I get warnings using “imageTitle” as an attribute name for a CoreData entity?为什么我使用“图像标题”作为核心数据实体的属性名称会收到警告?
【发布时间】:2011-08-02 15:12:30
【问题描述】:

我在 Xode 4 中使用“imageTitle”作为 Core Data 实体的属性名称时收到警告?在 Xcode 3 中没有警告...知道为什么吗?

确切的警告是:命名冲突:imageTitle 与 NSObject 或 NSManagedObject 上已有的方法冲突

非常烦人的是,我在过去的每个模型版本中都会收到此警告...
知道如何消除过去模型版本的这些警告吗?

编辑:如果您使用支持 CoreData 的“基于导航的应用程序”创建新项目并仅添加属性“imageTitle”,则可以轻松重现此警告...

【问题讨论】:

  • 您确定您的代码中没有任何 NSObject 或 NSManagedObject 的类扩展/类别可能包含名为 imageTitle 或 setImageTitle 的属性或方法?
  • 是的,我确定,我没有...

标签: iphone xcode core-data


【解决方案1】:

我无法回答为什么 imageTitle 是专门针对的。我唯一的猜测是它与某些内部方法或核心数据属性冲突。

在过去,如果您有一个使用保留字之一的核心数据属性,Xcode 会让您构建并且您的项目会显示非常奇怪的行为。最常见的例子是“描述”。 Cocoa 假设 description 返回一个描述对象的 NSString,通常用于日志记录。如果您有一个名为 description 的动态生成的核心数据属性,那么就会发生不好的事情。特别是如果它是数据或可转换的。

如果您尝试命名属性描述,当前版本的 Xcode 会给出相同的错误对话框。

虽然这很烦人,但我强烈建议您将属性名称更改为其他名称,例如 pictureTitle 或 imageTitleString。尽管“imageTitle”在文档中的点击率并不高,但它可能与内部的某些内容发生冲突。

作为最后的手段,向 Apple 提交错误。它实际上可能只是 Xcode 中的一个错误。

【讨论】:

  • 当然,我可以轻松地将名称更改为其他名称,但是我过去的所有模型版本呢?我每一个都收到这个警告,而且我有超过 10 个用于版本控制...
  • 呃......我想不出一种方法来摆脱警告而不把自己搞砸。您可以寻找编译器开关来禁用这些警告,但这不是一个好的长期安全解决方案。我肯定会向苹果提交错误。
  • @dickerhund 你是一直收到这个警告还是新的东西?
  • 切换到 Xcode 4 后,我收到这些警告;一直,当我加载我的项目时......
猜你喜欢
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多