У меня была похожая проблема со смешанным взаимодействием между Swift, Objective-C и CoreData : в моем проекте (написанном на Swift) я также использовал автоматически сгенерированные классы Swift Core Data.
Но в какой-то момент мне понадобился класс Objective C с открытыми свойствами (определенными в его заголовке), ссылающимися на основные сущности данных.
#import "ProjectName-Swift.h" // this is to import the swift entities into ObjC
@interface myObjCClass : NSObject
@property (nonatomic) MyCoreDataClass*myEntity;
@end
Как только я изменил модель CoreData, XCode попыталсячтобы перестроить классы, и я застрял с указанной ошибкой сборки цикла.
После начального момента отчаяния, поскольку у меня не было никаких фаз заголовка компиляции в моем проекте, чтобы изменить порядок, я обнаружил, чторешение было довольно простым:
В myObjCClass.h
я удалил общий оператор импорта заголовка Swift и изменил его с помощью директивы @class
:
@class MyCoreDataClass; // tell the compiler I will import the class definition somewhere else
// the rest stays the same
@interface myObjCClass : NSObject
@property (nonatomic) MyCoreDataClass*myEntity;
@end
, и я переместил #import "ProjectName-Swift.h"
оператор в файл определения класса myObjCClass.m
.
#import "myObjCClass.h"
#import "ProjectName-Swift.h"
@implementation myObjCClass
@end
И он не беспокоится.