2011-03-03 5 views
20

dos errores repentinamente despedido en este pedazo de código - duplicar declaración de interfaz para la clase 'test_coredataAppDelegate' - redefinición de 'struct test_coredataAppDelegate'declaración de interfaz duplicado para la clase '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 

cómo arreglar eso por favor

saludos

Respuesta

56

hay dos posibilidades:

  • tiene dos interfaces con el mismo nombre. Use la opción del menú Buscar de Xcode en el proyecto para encontrar instancias de test_coredataAppDelegate. A continuación, cambie el nombre de una de las interfaces
  • de alguna manera ha logrado importar el archivo .h dos veces. Compruebe para asegurarse de que siempre usa #import y no #include.

Editar:

Un poco más de información sobre #import/#include:

#include incluye ciegamente el archivo en la ubicación de la declaración #include. Esto significa que si #include un archivo dos veces en su .m obtendrá dos copias del archivo. Casi todos los archivos tradicionales C #include tienen algo como lo siguiente horquillado de todo el contenido:

// some_file.h 
#if !defined SOME_FILE_H 
#define SOME_FILE_H 

// entire content of #include file 

#endif 

Lo anterior se refiere a veces como una macro usar las guardas.

En Objective-C, si #import un archivo, el compilador realiza una comprobación para asegurarse de que no se haya importado. En consecuencia, los guardias suelen omitirse. Por lo tanto, si tiene #include un archivo que se suponía que era #import ed, no se realizará ninguna comprobación y en ocasiones obtendrá definiciones duplicadas.

+2

De alguna manera había copiado una versión extra del archivo. Gracias. – Alyoshak

+0

¿El mismo error tuvo el mismo archivo en el directorio del proyecto dos veces? ¡Gracias! – Tander

+0

¡Gran héroe! Gracias, me salvaste un par de minutos ... –

1

tengo la solución para este primera copia ese archivo por ejemplo video.m está dando este error así copiar este archivo y eliminar ese archivo y simplemente pegar de nuevo y añadir el archivo de nuevo para proyectar :)

10

Esto sucede porque tiene una copia de ese recurso en su buscador. No es necesario haberlo agregado en su proyecto. Debería encontrar en su buscador los archivos con el mismo nombre y eliminar los archivos duplicados.

+0

Esto me pasó a mí. ¿Por qué en el mundo XCode pasaría el vacío en archivos que no están en el proyecto? – bcattle

2

En mi caso la sustitución de

#import "Mixpanel.h" 

a

#import <Mixpanel/Mixpanel.h> 

resuelto el error

0

He eliminado clase del modelo fecha y crear uno nuevo y tema fijo. también eliminar del directorio del proyecto.

Cuestiones relacionadas