私は 2 つの非常によく似たモデル クラスを持つアプリに取り組んでいます。これらのクラスの両方を 1 つのビュー コントローラーで使用したいと考えています。このレイアウトは、モデル クラスのプロパティに基づいています。問題は、現在、どのクラスであるかを確認するための 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;
}
}
このソリューションはかなり冗長に思えますが、私はいくつかの場所でそれを行っています。したがって、2 つの NSManagedObject クラスのラッパー クラスを作成することは可能でしょうか。私は CoreData を使用し、xCode からモデルを生成したので、これらすべての if ステートメントは使用しません。
何かのようなもの:
@interface News : NSManagedObject
[...]
@property (nonatomic, retain) NSString * text;
[...]
@interface Event : NSManagedObject
[...]
@property (nonatomic, retain) NSString * text;
[...]
おそらく列挙型を使用して、これら2つの NSManagedObject クラスのラッパークラスを作成することは可能ですか? また、オブジェクトを更新可能、削除可能にしたいと考えています。抽象クラスを作成するために Enum などを使用できるのではないかと考えていましたが、そのようなクラスがどのように見え、機能し、使用されるのかわかりません。
これが可能である場合の提案と、その場合、このようなラッパー クラスがどのように見えるかは大歓迎です。