我一直在和这个具体问题搏斗一段时间。基本上我使用BigNerdRanch CoreDataStack添加了一个框架Carthage。
但是我一直有在我的Objective-C代码上使用上述框架的问题。我的项目是一个Objective-C项目,我最近在其中添加了Swift代码和Swift框架。
到目前为止,我已经能够在我的Swift代码中使用Swift框架而没有任何问题。但是一旦我开始在我的旧Obj-C上使用上述Swift框架,特别是AppDelegate.m,无论如何我都会遇到编译器错误。
根据我的理解,我必须像这样导入它:
#import <CoreDataStack/CoreDataStack-Swift.h>
我在AppDelegate.m上做了。
我的项目也有以下设置:
项目目标设定:
构建Swift编译的设置:
我一直在StackOverflow中看到一些答案,可以将公共内容添加到类中。但我无法这样做,因为导入的Frameworks是自包含的,只包含Headers供我在XCode项目中查看。
感谢帮助人员。
答案 0 :(得分:6)
您添加了一个用swift编写的框架,如果它们不支持Objective C
,则不能在目标c代码中使用它。
但是,您可以在swift中创建一个类,它将用作框架和ObjC类之间的中介。
@objc class coreDataStackConvertor: NSObject {
func createStack(arg: Type) {
// Code which uses the real CoreDataStack
}
}
从Objective c类中,您可以使用convertor类中的方法。