接收方类型是前向声明

我有这个代码(以及其他东西):

- (NSManagedObjectContext *) managedObjectContext { assert([NSThread isMainThread]); if (_managedObjectContext != nil) { return _managedObjectContext; } NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; if (coordinator != nil) { _managedObjectContext = [[NSManagedObjectContext alloc] init]; [_managedObjectContext setPersistentStoreCoordinator: coordinator]; } return _managedObjectContext; } 

这些行给了我错误,类消息是一个前向声明:

 _managedObjectContext = [[NSManagedObjectContext alloc] init]; [_managedObjectContext setPersistentStoreCoordinator: coordinator]; 

这是什么,我该如何解决?

您必须在Supporting Files / YourApp-Prefix.pch文件中导入CoreData / CoreData.h:

 #ifdef __OBJC__ #import  #import  #import  #endif 

通过前进声明意味着你必须通过@Class声明类。 导入.h / .m文件中的类,希望它能解决问题。

将其添加到.h或.m文件的顶部

 #import  

我通过在使用Swift类的Objective C类中导入#import“Project-Name-Swift.h”文件解决了这个问题。

我更改文件DDXML.h和工作。

文件:DDXML.h

更改:

 #if TARGET_OS_IPHONE && 0 // Disabled by default 

至:

 #if TARGET_OS_IPHONE && 1 // Disabled by default 

重命名一个类后经常发生这种情况,然后忘记在头文件中更新@class myclass(显然不会抛出编译错误。)