我正在开发一个应用程序,其中有两个非常相似的模型类。我想在一个 View Controller 中使用这两个类,该布局基于模型类的属性。问题是我目前有很多 if 语句来检查它是哪个类。
示例:
- (UIView *)setUpViewForObject:(id)object
{
// Check if it is a Post or Event object
Post *post;
Event *event;
if ([object class] == [Event class]) {
event = (id)object;
} else if ([object class] == [Post class]) {
post = (id)object;
}
if (post) {
// Do stuff
// ie:
self.customUiView.textField.text = post.text;
} else if (event) {
// Do similar stuff
// ie:
self.customUiView.textField.text = event.text;
}
}
这个解决方案看起来相当多余,我在几个地方做了它。因此,我想知道是否可以创建两个 NSManagedObject 类的包装类。我使用 CoreData 并从 xCode 生成模型,因此我不会使用所有这些 if 语句。
类似于:
@interface News : NSManagedObject
[...]
@property (nonatomic, retain) NSString * text;
[...]
@interface Event : NSManagedObject
[...]
@property (nonatomic, retain) NSString * text;
[...]
是否可以创建这两个 NSManagedObject 类的包装类,也许可以使用枚举。我还希望这些对象是可更新、可删除等。我想我也许可以使用 Enum 或类似的东西来创建一个抽象类,但我不知道这样的类将如何外观、工作和使用。
如果可能的话,任何建议以及在这种情况下像这样的包装类的外观将不胜感激。
最佳答案
Core Data 支持抽象父类(super class)的概念。因此,您可以使用一个属性(例如“标签”)来定义它,该属性可以区分这两个类。那么新闻和事件都将该类作为它们的父类(super class)。这是与 Core Data 一起使用的非常常见的解决方案类型。
关于objective-c - 如何在 Objective-C 中创建两个模型类的包装类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11808954/