дубликат объявления интерфейса для класса 'test_coredataAppDelegate' - PullRequest
23 голосов
/ 03 марта 2011

две ошибки неожиданно сработали в этом куске кода дубликат объявления интерфейса для класса «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

как это исправить пожалуйста

С наилучшими пожеланиями

Ответы [ 5 ]

59 голосов
/ 03 марта 2011

Есть две возможности:

  • у вас есть два интерфейса с одним и тем же именем. Используйте поиск Xcode в меню проекта, чтобы найти экземпляры test_coredataAppDelegate. Затем переименуйте один из интерфейсов
  • каким-то образом вам удалось импортировать файл .h дважды. Убедитесь, что вы всегда используете #import, а не #include.

Изменить:

Немного больше информации о #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, ни одна проверка не будет выполнена, и вы иногда получите дублирующиеся определения.

11 голосов
/ 28 апреля 2015

Это происходит потому, что у вас есть копия этого ресурса в вашем искателе.Не обязательно, чтобы он был добавлен в ваш проект.Вы должны найти в своем искателе файлы с тем же именем и удалить дублирующиеся файлы.

3 голосов
/ 19 октября 2016

В моем случае замена

#import "Mixpanel.h"

на

#import <Mixpanel/Mixpanel.h>

Устранена ошибка

1 голос
/ 15 мая 2014

У меня есть решение для этой первой копии, которое выдает файл, например video.m, с этой ошибкой, поэтому скопируйте этот файл и удалите этот файл, просто вставьте его снова и добавьте этот файл в проект снова :)

0 голосов
/ 15 февраля 2017

Я удалил класс модели даты, создал новый и исправил проблему. также удалить из каталога проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...