【发布时间】:2014-09-18 06:58:45
【问题描述】:
使用 Xcode 6 Beta 4,面向 iOS 8:
我同时使用 Core Data 和 Mogenerator。如果您不熟悉“Mogen”,请跳到底部。当 Mogen 为实体生成 NSManagedObject 子类时,它会这样做:
@interface MyEntityID : NSManagedObjectID {}
@end
@interface _MyEntity : NSManagedObject {}
- (MyEntityID*)objectID;
----------------------------------------------------------------------------
@implementation _MyEntity
- (KJMWorkoutID*)objectID {
return (KJMWorkoutID*)[super objectID];
}
我想这很方便。 NSManagedObject 有一个 objectID 属性,_MyEntity 所做的只是覆盖它的 getter 以返回一个 MyEntityID,以便我们可以知道它是一个专门用于我们的 _MyEntityClass 的 ID。
那么,回到我的问题。我想通过检查它们是否不相等来比较两个 MyEntityID:
if (![self.objectID isEqual:self.previousID])
我收到此警告:
Type of property 'objectID' does not match type of accessor 'objectID'
好的,我知道该属性是 NSManagedObjectID,但我们正在调用 Mogen 编写的返回 MyEnytityID 的访问器方法。甚至代码完成也承认这一点。
如何仍然看到 NSManagedObject 的 objectID 的 NSManagedObjectID 属性类型? 我应该以某种方式使警告静音吗? 它可能只是 Xcode 6 Beta 的东西吗? (在 Xcode 5 中不会发生)
什么是莫根:
Mogen 只是一个有用的工具,它可以为您的数据模型实体生成 NSManagedObject 的子类。这有点像 Xcode 所做的,但不会删除您每次重新生成子类时编写的任何自定义代码,它为您提供了一大堆用于创建新实体等的好方法。如果下栏前缀类命名的东西你也有一些新的东西,这只是 Mogen 阻止自己覆盖你编写的任何自定义代码的方式。
【问题讨论】:
标签: ios objective-c xcode ios8 xcode6