我在Xcode 6中有一个Core Data / Swift Cocoa应用程序项目(让我们调用项目Stuff
)。我创建了一个名为Query
的核心数据实体,并使用Xcode为它创建了一个NSManagedObject
子类。
此时,Xcode 6提供了按照预期为我创建桥接标头,并创建了Stuff-Bridging-Header.h
。在桥接标题中#import "Query.h"
后,我的模型对象Query
在我的应用目标Swift代码中可用。
如何将Query
核心数据对象(由Xcode生成的Query.h和Query.m支持)提供给我的测试目标Swift代码StuffTests
?我尝试手动创建头文件StuffTests-Bridging-Header.h
并向其添加#import "Query.h"
,但我的Swift测试类无法解析Query
类。
答案 0 :(得分:1)
我在纯Swift中有一个CoreData项目,没有桥接头文件和测试正在运行。 以下是我的设法:
我的项目名称是 cars ,我有一个名为 Car 的NSManagedObject
Car.swift:
Car.swift文件目标成员资格:
cars.xcdatamodeld数据模型检查器:
答案 1 :(得分:0)
您可以直接在Swift中使用NSManagedObject
,如下所示:
class Query : NSManagedObject {
@NSManaged var attrOne : attrOneType
// ...
}
目前Xcode不会为实体生成Swift代码;它仍然只生成Objective-C,可能会引导您进行桥接解决方案。但是,您不需要桥接 - 只需从生成的Objective-C开始,并使用@NSManaged
注释编写Swift代码。
答案 2 :(得分:0)
我花了一些时间来弄明白这一点。理想的解决方案是在测试目标本身中导入桥接头。进入Build Settings
> Swift compiler
> Code Generation
并提供桥接标题的名称。
注意,默认情况下不选择测试目标。您必须在滚动条中选择它(它与General,info,build Settings,build Phases和Build Rules位于同一行)。
这样,您的项目和不同的测试目标都将拥有相同的桥接标题。