Подтвердить что ты не робот

Тип приемника - это декларация

У меня есть этот код (наряду с другими вещами):

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

Что это такое и как его исправить?

4b9b3361

Ответ 1

Вы должны импортировать CoreData/CoreData.h в файл Supporting Files/YourApp-Prefix.pch:

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

Ответ 2

В результате форвардной декларации вы должны объявлять класс @Class. Импортируйте класс в файл .h/.m и надейтесь, что он решит проблему.

Ответ 3

Добавьте это в начало файла .h или .m

#import <CoreData/CoreData.h>

Ответ 4

Я решил проблему, импортировав файл #import "Project-Name-Swift.h" в классе Objective C, который использует класс Swift.

Ответ 5

Измените файл DDXML.h и Work.

Файл: DDXML.h

Изменить:

#if TARGET_OS_IPHONE && 0 // Disabled by default

To:

#if TARGET_OS_IPHONE && 1 // Disabled by default

Ответ 6

Это часто происходит со мной после переименования класса, а затем забывает обновить @class myclass в файле заголовка (который, очевидно, не будет вызывать ошибку компиляции.)