接收方类型是前向声明
我有这个代码(以及其他东西):
- (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(显然不会抛出编译错误。)