I have this code (along with other stuff):
- (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;
}
These lines are giving me errors that class message is a forward declaration:
_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator: coordinator];
What is this and how do I fix it?
You must import CoreData/CoreData.h in the file Supporting Files/YourApp-Prefix.pch:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#endif
By forward Declaration means you must be declaring class by @Class
. Import the Class in the .h/.m file and hope so it will resolve the issue.
Add this to the top of your .h or .m file
#import <CoreData/CoreData.h>
I solved the issue by importing the #import "Project-Name-Swift.h" file in the Objective C class that uses a Swift class.
I Change file DDXML.h and Work.
File: DDXML.h
Change:
#if TARGET_OS_IPHONE && 0 // Disabled by default
To:
#if TARGET_OS_IPHONE && 1 // Disabled by default
This frequently happens to me after renaming a class, and then forgetting to update @class myclass in a header file (which obviously won't throw a compile error.)