2011-05-09 9 views
0

私はこの操作が必要です。bscメソッドの受信IDと私は後でオブジェクトを設定するためにドット構文を使用するのが好きです。 現在、私はこのようにしています。しかし、誰かがよりエレガントな方法を知っているかもしれない?タイプをidからサブクラス化nsmanagedobject

-(NSError *) updateObject:(id)object operation:(NSInteger)operation; 
{ 
CurrentCompany *obj1 = nil; 
... 
CompanyStuff *obj2 = nil; 


if ([[[(CurrentCompany *)object entity] name] isEqualToString:@"CurrentCompany"]) obj1 = (CurrentCompany *)object; 
if ([[[(CompanyStuff *)object entity] name] isEqualToString:@"CompanyStuff"]) obj2 = (CompanyStuff *)object; 

NSLog(@"UpdatedObject:%@",obj1); 

答えて

1

これらのクラスは、共通のプロトコルに準拠するか、プロパティを宣言し、共通のスーパークラスから継承する場合は、あなただけの静的にそのプロトコルやスーパーなどの変数を入力することができます。これらのどちらにも当てはまらない場合は、とにかく互換的に扱われるべきではないようです。

また、これは実際には関係ありませんが、idから明示的なキャストは無意味です。割り当てることができます。

+0

@Chunkコードの平和が高く評価されています。 CurrentCompany * obj1 =&オブジェクトのような意味ですか? – Alex

+0

@Alex: 'object'はすでにオブジェクトへのポインタを保持しています。 '&object'はオブジェクトではなく' object'変数へのポインタです。そのポインタをオブジェクトへのポインタ(例えば、 'CurrentCompany *')を保持している変数にタイプしようとすると、問題が発生します。 –

+0

@Peter Hosey私はどんな種類の問題を期待できますか? – Alex

関連する問題