2011-06-20 11 views
2

新しいXcode 4.2(iOS 5用)に更新されましたが、今度はプロジェクトが「 'カテゴリ'が別のシンボルとして再宣言されました」というエラーでビルドされなくなりました。それから、 'メンバー' name 'のリクエストは、構造体または共用体ではなく、 "無効なレシーバタイプ' Category ''のような警告ではないというエラーのホストがあります。クラスの宣言

私は宣言の仕方と関係があると思います。この(コアデータ)クラスについて、私は、次の宣言を持っている:

#import <CoreData/CoreData.h> 

@class Article; 
@interface Category : NSManagedObject 
{ 
} 

@property (nonatomic, retain) NSNumber * id; 
@property (nonatomic, retain) NSString * name; 
@property (nonatomic, retain) NSString * desc; 
@property (nonatomic, retain) NSDate * lastUpdate; 
@property (nonatomic, retain) NSSet* articles; 
@end 

@interface Category (CoreDataGeneratedAccessors) 
- (void)addArticlesObject:(Article *)value; 
- (void)removeArticlesObject:(Article *)value; 
- (void)addArticles:(NSSet *)value; 
- (void)removeArticles:(NSSet *)value; 

@end 

-

#import "Category.h" 

@implementation Category 

@dynamic id; 
@dynamic name; 
@dynamic desc; 
@dynamic lastUpdate; 
@dynamic articles; 

@end 

- 別のコアデータ持つクラスにおいて

:私が使用Nリレーション"@class Category;"宣言する。 私はこのクラスを使用するクラスで、ヘッダファイルをインポートします:#import "Category.h"。

これを行う最善の方法は何か、または問題を見つけるために必要な情報は何か。私はあらゆる種類の組み合わせを試しましたが、宣言する時期と方法を今混乱させています。 (コードは罰金私が構築最後の時間を働いていた)

答えて

2

あなたのコードは、おそらくobjc/runtime.hから物事の宣言を見ている:

typedef struct objc_category *Category; 

慣例により、Cocoaクラスが示す2または3文字のプレフィックスで命名されています元の人、組織またはプロジェクト。これは、この種の問題を回避するのに役立ちます。

+0

ありがとうAhruman。私はそれに精通していない、どのように私はこれを変更するだろうか?自分のCategoryクラスのクラス名を変更しますか? (私は比較的ココアに新しい、Javaの世界から来ています) –

+0

また、問題は、CoreDataオブジェクトであり、ユーザーが新しいバージョンに更新するときにデータベースを破損するので、簡単にクラスを屈折させることができないということです。あなたのCoreDataモデルの新しいバージョンを作成し、古いモデルから新しいモデルに移行することができます(クラスの名前はテーブル名の変更を意味します) –

+0

@Luuk D. Jansen。 – jamapag

関連する問題