ios - 使用多个 NSManagedObject

标签 ios core-data nsmanagedobject

我的问题很简单。我在 CoreData 中有大约 10 个不同的实体,它们都具有相同的属性(名称、描述......)。要以这种方式访问​​这些属性:

MyEntity *entity=...;
MyEntity2 *entity2=...;
...
MyEntity10 *entity10=...;

[self myfunction:AnEntity];

在我将一个随机对象发送给一个函数之后

-(void)myfunction:(id)myentity

在这里我想使用一个可以访问实体属性的变量,无论它是类 MyEntity 还是 MyEntity2 中的王...问题是我做不到:

id myobject=myentity;
NSLog(@"%@", myobject.name);

如果有人有解决方案来避免测试对象的类别 :) 谢谢!

最佳答案

如果您有 10 个不同的实体,我认为是时候转向 NSManagedObject 子类了。然后您可以定义一个包含所有共享属性的协议(protocol),并声明您的 NSManagedObject 子类符合该协议(protocol)。然后你的电话就变成了

-(void)myfunction:(id<SharedAttributesProtocol>)myObject

{
    NSLog(@"%@", myObject.name);
}

您提到“描述”是您的共享属性之一。 -description 方法已经定义,因此您可能想为该属性选择另一个名称。

为公共(public)属性使用父 NSEntity 的缺点是您最终会得到一个非常宽的表。该表具有所有公共(public)属性,但也具有每个子实体的所有不同属性。根据对象的大小,这将在 iOS 下影响性能,尽管在 OS X 上并没有那么糟糕。

关于ios - 使用多个 NSManagedObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14012745/

相关文章:

ios - Swift/SpriteKit 与自定义类的碰撞

IOS Storyboard : Load Multiple Subviews for given position

ios - 在另一个版本中更改 NSManagedObject 父实体

ios - 最佳实践 : exposing NSManagedObject in framework

iphone - 谁删除了我的 iOS 应用程序?

ios - 如何添加 "Align bottom to: parent view"系统约束?

iphone - iOS:监控电池电量使用更多电池?应该自动保存吗?

iphone - iPhone 应用程序的本地存储

ios - NSFetchedResultsController 刷新 UITableView 条目而不会重新加载卡顿

ios - NSManagedObject 的 setter 创建 _CDSnapshot_Provence_