在这段代码中突然发生了两个错误 - 类'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
如何解决这个问题
最好的祝福
有两种可能性:
test_coredataAppDelegate
的实例。然后重命名其中一个接口#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的文件,那么两个检查都不会完成,你有时会得到重复的定义。
发生这种情况是因为您在查找程序中有该资源的副本。没有必要在项目中添加它。您应该在查找器中找到具有相同名称的文件,并删除重复的文件。
在我的情况下替换
#import "Mixpanel.h"
至
#import <Mixpanel/Mixpanel.h>
解决了错误
我有这个第一个副本的解决方案,例如video.m文件给出了这个错误,所以复制这个文件并删除该文件,然后再次粘贴它并再次将该文件添加到项目中:)
我删除了日期模型类并创建了新的类并修复了问题。也从项目目录中删除。