web-dev-qa-db-fra.com

Le type de destinataire est une déclaration aval

J'ai ce code (avec d'autres choses):

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

Ces lignes me donnent des erreurs que le message de classe est une déclaration en avant:

_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator: coordinator];

Qu'est-ce que c'est et comment puis-je le réparer?

17
cdub

Vous devez importer CoreData/CoreData.h dans le fichier Supporting Files/YourApp-Prefix.pch:

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
    #import <CoreData/CoreData.h>
#endif
37
Edu

Par forward, la déclaration signifie que vous devez déclarer la classe par @Class. Importez la classe dans le fichier .h/.m et espérez que le problème sera résolu.

11
Jamal Zafar

Ajoutez ceci en haut de votre fichier .h ou .m

#import <CoreData/CoreData.h>
5
Yup.

J'ai résolu le problème en important le fichier "import-Project-Name-Swift.h" #import de la classe Objective C qui utilise une classe Swift.

2
Rudolf J

Je change le fichier DDXML.h et le travail.

Fichier: DDXML.h

Changement:

#if TARGET_OS_IPHONE && 0 // Disabled by default

À:

#if TARGET_OS_IPHONE && 1 // Disabled by default
0
Oseias gomes

Cela m’arrive fréquemment après avoir renommé une classe, puis oublié de mettre à jour @class myclass dans un fichier d’en-tête (ce qui ne provoque évidemment pas d’erreur de compilation).

0
Ed Filowat