私は(他のものと一緒に)このコードを持っています:
- (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];
これは何ですか、どうすれば修正できますか?
CoreData/CoreData.hをSupporting Files/YourApp-Prefix.pchファイルにインポートする必要があります。
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#endif
前方宣言とは、@Class
によってクラスを宣言する必要があることを意味します。クラスを.h/.mファイルにインポートし、問題が解決することを期待してください。
これを.hまたは.mファイルの先頭に追加します
#import <CoreData/CoreData.h>
Swiftクラスを使用するObjective Cクラスの#import "Project-Name-Swift.h"ファイルをインポートすることで問題を解決しました。
ファイルDDXML.hとWorkを変更します。
ファイル:DDXML.h
変化する:
#if TARGET_OS_IPHONE && 0 // Disabled by default
に:
#if TARGET_OS_IPHONE && 1 // Disabled by default
これは、クラスの名前を変更し、ヘッダーファイルの@class myclassを更新するのを忘れた後、よく起こります(コンパイルエラーはスローされません)。