我有这个代码(以及其他东西):
- (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];
这是什么以及如何解决?
答案 0 :(得分:37)
您必须在Supporting Files / YourApp-Prefix.pch文件中导入CoreData / CoreData.h:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#endif
答案 1 :(得分:11)
通过前进声明意味着您必须按@Class
声明课程。导入.h / .m文件中的类,希望它能解决问题。
答案 2 :(得分:5)
将此添加到.h或.m文件的顶部
#import <CoreData/CoreData.h>
答案 3 :(得分:2)
我通过在使用Swift类的Objective C类中导入#import“Project-Name-Swift.h”文件解决了这个问题。
答案 4 :(得分:0)
我更改文件DDXML.h和Work。
文件:DDXML.h
变化:
#if TARGET_OS_IPHONE && 0 // Disabled by default
要:
#if TARGET_OS_IPHONE && 1 // Disabled by default
答案 5 :(得分:0)
在重命名一个类之后,经常发生这种情况,然后忘记在头文件中更新@class myclass(显然不会引发编译错误。)