Objective c 类'的重复接口声明;测试coredataAppDelegate';

Objective c 类'的重复接口声明;测试coredataAppDelegate';,objective-c,core-data,Objective C,Core Data,这段代码中突然出现了两个错误 -类“test\u coredataAppDelegate”的接口声明重复 -“结构测试\u coredataAppDelegate”的重新定义 #import <UIKit/UIKit.h> #import <CoreData/CoreData.h> @interface test_coredataAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDel

这段代码中突然出现了两个错误 -类“test\u coredataAppDelegate”的接口声明重复 -“结构测试\u 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
#导入
#进口
@接口测试\u coredataAppDelegate:NSObject{
///////////////////新零件/////////////////////////
NSManagedObjectModel*managedObjectModel;
NSManagedObjectContext*managedObjectContext;
NSPersistentStoreCoordinator*persistentStoreCoordinator;
//////////////////////////////////////////////
UIWindow*窗口;
UITabBarController*tabBarController;
}
@属性(非原子、保留、只读)NSManagedObjectModel*managedObjectModel;
@属性(非原子、保留、只读)NSManagedObjectContext*managedObjectContext;
@属性(非原子、保留、只读)NSPersistentStoreCoordinator*persistentStoreCoordinator;
@属性(非原子,保留)IBUIWindow*window;
@属性(非原子,保留)IBUITABBARCONTROLLER*tabBarController;
@结束
请问怎么修


致以最诚挚的问候有两种可能:

  • 您有两个同名的接口。使用Xcode的“在项目中查找”菜单选项查找
    test\u coredataAppDelegate
    的实例。然后重命名其中一个接口
  • 不知何故,您已经成功导入了.h文件两次。检查以确保始终使用
    #导入
    ,而不是
    #包含
编辑:

有关导入的更多信息包括:

#include
#include
语句的位置盲目地包含文件。这意味着如果您在
.m
中两次包含一个文件,您将获得该文件的两份副本。几乎所有传统的C
#include
文件都有类似于以下的内容:

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

//  entire content of #include file

#endif
上面的代码有时被称为include-guard宏


在Objective-C中,如果导入文件,编译器将执行检查,以确保尚未导入该文件。因此,防护装置通常被省略。因此,如果您包含一个本应导入的文件,那么这两个检查都不会执行,有时还会得到重复的定义。

我已经找到了解决方案 首先复制那个文件 例如,video.m给出了这个错误 所以复制这个文件,删除那个文件,然后再粘贴一次,再把那个文件添加到项目中
:)

发生这种情况是因为您的查找程序中有该资源的副本。没有必要将其添加到项目中。您应该在查找器中找到同名文件并删除重复的文件。

在我的情况下

#import "Mixpanel.h"

#导入

解决了错误

我删除了日期模型类并创建了新的模型类并修复了问题。
同时从项目目录中删除。

以某种方式复制了文件的额外版本。谢谢。同样的错误在项目目录中有相同的文件两次。谢谢我不知道如何“使用Xcode的“在项目中查找”菜单选项来查找xxx的实例”。我使用的是Xcoder11.3。没有项目菜单选项…@Yossi它从2011年开始移动。“在项目中查找”功能现在是导航栏中搜索表的一部分。@Yossi No,主编辑器窗口左侧的窗格。这发生在我身上。为什么XCode会在项目中没有的文件中出现真空?
#import <Mixpanel/Mixpanel.h>