【问题标题】:duplicate interface declaration for class 'test_coredataAppDelegate'类“test_coredataAppDelegate”的重复接口声明
【发布时间】:2011-07-08 00:06:31
【问题描述】:

这段代码突然出现两个错误 - 类“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

请问如何解决

最好的问候

【问题讨论】:

    标签: objective-c core-data


    【解决方案1】:

    有两种可能:

    • 您有两个同名的接口。使用 Xcode 在项目菜单中的查找选项来查找 test_coredataAppDelegate 的实例。然后重命名其中一个接口
    • 不知何故,您成功地导入了 .h 文件两次。检查以确保您始终使用 #import 而不是 #include

    编辑:

    更多关于#import/#include的信息:

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

    // some_file.h
    #if !defined SOME_FILE_H
    #define SOME_FILE_H
    
    //  entire content of #include file
    
    #endif
    

    上面有时被称为包含保护宏。

    在 Objective-C 中,如果您 #import 一个文件,编译器会执行检查以确保它尚未被导入。因此,防护装置通常被省略。因此,如果您 #include 一个应该是 #imported 的文件,则不会进行任何检查,并且您有时会得到重复的定义。

    【讨论】:

    • 不知何故复制了一个额外版本的文件。谢谢。
    • 同一个错误是否两次在项目目录下有同一个文件。谢谢!
    • 我看不到如何“使用 Xcode 在项目菜单中的查找选项来查找 xxx 的实例”。我正在使用 Xcoder 11.3。没有项目菜单选项...
    • @Yossi 自 2011 年起搬迁。“在项目中查找”功能现在是导航栏中搜索表的一部分。
    • @Yossi 不,主编辑器窗口左侧的窗格。
    【解决方案2】:

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

    【讨论】:

    • 这发生在我身上。为什么 XCode 会清空项目中不存在的文件?
    【解决方案3】:

    在我的情况下替换

    #import "Mixpanel.h"
    

    #import <Mixpanel/Mixpanel.h>
    

    解决了错误

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-24
          • 1970-01-01
          • 2012-10-24
          • 1970-01-01
          • 2013-05-05
          • 1970-01-01
          • 1970-01-01
          • 2012-05-17
          相关资源
          最近更新 更多