簡體   English   中英

接收方類型是前向聲明

[英]Receiver type is forward declaration

我有這個代碼(以及其他東西):

- (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 <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和工作。

文件:DDXML.h

更改:

#if TARGET_OS_IPHONE && 0 // Disabled by default

至:

#if TARGET_OS_IPHONE && 1 // Disabled by default

這在我重命名一個類后經常發生,然后忘記在頭文件中更新@class myclass(顯然不會拋出編譯錯誤。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM