2012-04-28 11 views
1

私のモデルには親エンティティ "List"と単なるリストの一種である "UserList"という名前の子エンティティ(subentity)があります。 "UserList"はそれ自身の属性や関係を持たず、Listからすべてを継承します。 ListはListItemと多対多の関係を持っています。コアデータの親エンティティはNSManagedObjectサブクラスを生成しました

XCode 4.2にNSManagedObjectサブクラスを生成するよう依頼します。それは私が含め期待するものを生成リストについて 、

- (void)insertObject:(NSManagedObject *)value inListItemsAtIndex:(NSUInteger)idx; 
- (void)removeObjectFromListItemsAtIndex:(NSUInteger)idx; 
... 

生成「のUserList」クラスは、それが「リスト」のサブクラスとして宣言された場合はOKだろう任意のメソッドを宣言しないただししかしthatsのないものをそれが生成されました。

@interface UserList : NSManagedObject 
@end 

本当にUserListはListのサブクラスですか?ヘッダーを変更することはできますか?または、何かもっと複雑なことが起こっていますか?

答えて

3

確認することがいくつかあります。まず、ListとUserListの両方のエンティティにクラス名を指定してから、UserListが親エンティティとしてListを宣言していることを確認します。

ジェネレータは厄介です。モデルGUIでクラス名を指定していない場合、クラス名はオンザフライで生成されます。残念ながら、生成される順序によっては、適切な情報で生成されないものもあります(イメージングUserListが最初に生成されます...リストにクラス名を特に指定しなかった場合は、 NSManagedObject)。

慣例として、私はモデルGUIで常にクラス名を割り当てます。私は具体的にクラスを各エンティティ(エンティティに名前を付ける場所)に割り当てるときにこれが起こるのを見たことはありませんが、起こるかもしれないと思います。

クラスファイルを再生成してください。今度は正しく生成されるかもしれません。コメントの後

EDIT

明確化...

注:残念ながら、Xcodeのは、この問題で非常に一貫しています。エンティティに明示的にクラス名を与えない場合、それを参照する他のクラス名は「間違った」クラス名で生成されます。

ワークフローには次のオプションのいずれかをおすすめします。

  1. 各エンティティのGUIに常にクラス名を割り当てます。

  2. 初めて生成するときは、常にクラスを2回生成してください。

  3. Xcodeクラスジェネレータの代わりに、モージェネレータhttps://github.com/rentzsch/mogenerator#readmeを使用してください。

+0

Whoa。出来た。私は何も変更していない、あなたの提案としてUserListを再生成しました。変更された唯一のことは、UserListをListのサブクラスとして宣言することです。私はXCodeがそんなに矛盾していないことを望む。ありがとう。 – David