2011-06-20 2 views
2

Я обновился до нового Xcode 4.2 (для iOS 5), но теперь мой проект больше не строится с ошибкой: «Категория« переопределена как другой символ ». Затем существует множество ошибок, связанных как «Запрос имени участника» не является структурой или объединением и предупреждениями, например «Недопустимый тип приемника« Категория ».Объявление классов

Я предполагаю, что это связано с тем, как я делаю свои заявления. Что касается этого (Core Data) класса, у меня есть следующее заявление:

#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 

-

В другом классе Core Data, который имеет: п отношение я использую «Категория @class»; объявить. В классе, где я использую этот класс, я импортирую заголовочный файл: #import «Category.h».

Каков наилучший способ сделать это или какая дополнительная информация необходима для поиска проблемы. Я пробовал всевозможные комбинации, но сейчас запутался, когда и как объявить. (Код работал отлично последний раз, когда я строю)

ответ

2

Ваш код, вероятно, видеть вещи заявление от objc/runtime.h:

typedef struct objc_category *Category; 

По соглашению, классы какао с именем, двух- или три буквы префикса, указывающего инициатором, организацией или проектом. Это помогает избежать такого рода проблем.

+0

Спасибо Ahruman. Я не знаком с этим, как бы это изменить? Изменить имя класса моего собственного класса категории? (Я относительно новичок в Cocoa и пришел из мира Java) –

+0

Кроме того, проблема в том, что я не могу превозносить класс, который легко, так как он является объектом CoreData и меняет его, нарушает работу базы данных при обновлении пользователями новой версии приложение (как название класса означало бы изменение названия таблицы) –

+0

@Luuk D. Jansen вы можете создать новую версию своей модели CoreData и перенести ее с старой модели на новую. – jamapag

Смежные вопросы