Декларация двойного интерфейса для класса 'test_coredataAppDelegate'
две ошибки, внезапно запущенные в этом фрагменте кода
- декларация двойного интерфейса для класса 'test_coredataAppDelegate'
- переопределение "struct test_coredataAppDelegate"
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
@interface test_coredataAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
///////////////////New parts /////////////////////////
NSManagedObjectModel *managedObjectModel;
NSManagedObjectContext *managedObjectContext;
NSPersistentStoreCoordinator *persistentStoreCoordinator;
//////////////////////////////////////////////
UIWindow *window;
UITabBarController *tabBarController;
}
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@end
как исправить это, пожалуйста,
С наилучшими пожеланиями
Ответы
Ответ 1
Есть две возможности:
- У вас есть два интерфейса с тем же именем. Используйте Xcode find в опции меню проекта, чтобы найти экземпляры
test_coredataAppDelegate
. Затем переименуйте один из интерфейсов
- каким-то образом вам удалось дважды импортировать файл .h. Убедитесь, что вы всегда используете
#import
, а не #include
.
Edit:
Немного больше информации о #import
/#include
:
#include
слепо включает файл в местоположении оператора #include
. Это означает, что если вы #include
файл дважды в вашем .m
, вы получите две копии файла. Почти все традиционные файлы C #include
имеют что-то вроде следующего брекетинга всего содержимого:
// some_file.h
#if !defined SOME_FILE_H
#define SOME_FILE_H
// entire content of #include file
#endif
Вышеупомянутое иногда упоминается как защитный макрос включения.
В Objective-C, если вы #import
файл, проверка выполняется компилятором, чтобы убедиться, что он еще не был импортирован. Следовательно, ограждения обычно опускаются. Поэтому, если вы #include
файл, который должен был быть #import
ed, ни одна проверка не будет выполнена, и вы иногда получите дубликаты определений.
Ответ 2
Это происходит потому, что у вас есть копия этого ресурса в вашем приложении. Не нужно было добавлять его в свой проект. Вы должны найти в своем приложении файлы с тем же именем и удалить дубликаты файлов.
Ответ 3
В моем случае замена
#import "Mixpanel.h"
к
#import <Mixpanel/Mixpanel.h>
Устранена ошибка
Ответ 4
У меня есть решение для этого
сначала скопируйте этот файл
например, video.m дает эту ошибку
поэтому скопируйте этот файл и удалите этот файл и просто вставьте его снова и добавьте этот файл для повторного проекта
:)
Ответ 5
Я удалил модель модели даты и создаю новую и исправил ее.
также удалите из каталога проекта.