2013-11-27 66 views
17

我有這樣的代碼(與其他東西一起):接收器類型是正向聲明

- (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

我想你忘記導入的頭文件你已經聲明像@class abcd – Tendulkar

回答

37

必須將該文件支持文件/ YourApp-Prefix.pch進口CoreData/CoreData.h:

#ifdef __OBJC__ 
    #import <UIKit/UIKit.h> 
    #import <Foundation/Foundation.h> 
    #import <CoreData/CoreData.h> 
#endif 
+3

這是愚蠢的,但它的工作原理。 – wander

11

轉發聲明表示您必須聲明@Class。導入.h/.m文件中的類,並希望它可以解決問題。

4

添加到您的.h的頂部或.m文件

#import <CoreData/CoreData.h> 
0

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

文件:DDXML.h

變化:

#if TARGET_OS_IPHONE && 0 // Disabled by default 

要:

#if TARGET_OS_IPHONE && 1 // Disabled by default 
2

我通過導入#進口 「項目,名稱,Swift.h」 文件解決問題在使用Swift類的Objective C類中。

0

這重命名類,然後忘記更新@class在頭文件MyClass的後經常發生在我身上(這顯然不會拋出編譯錯誤。)