测试与非测试中的Swift和CoreData Casting问题

Dan*_*l D 8 core-data ios swift

我在Xcode 6上使用Swift CoreData.

我读过的发行说明,并已看到了这个问题,关于确保标记了一个模块名称(应用程序名称)核心数据模型,这样你就可以施放NSManagedObject在运行时的型号.

当我这样做时,我可以让应用程序正常运行(好!).但是,我的问题是,当我尝试测试相同的代码时,只要转换发生Swift dynamic cast failed错误(bad :(),测试就会崩溃.这使得我很难测试我的应用程序.

在为测试与运行构建应用程序时,我们使用的模块名称是否有任何影响?

提前感谢任何指针......

跟进:

这并不理想:如上所述,为了让Swift使用Core Data模型,您需要使用应用程序的名称来修饰类名.这适用于构建应用程序,但测试在不同的应用程序名称下运行!这意味着您需要进入数据建模器并将该类名更改为myAppname.myEntity,myAppnameTests.myEntity然后才能在测试使用或调用时按名称使用这些实体.

Owe*_*hao 1

您需要向 Entity.swift 文件添加一行,使其成为 Objective-C 类,如下所示:

@objc(YourEntity)
class YourEntity: NSManagedObject {
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果您的项目不包含任何 Objective-C 代码,我认为这是一个错误。但是,您需要添加该行直到此问题修复。

我是从这里学到的。

YouTube 视频 11:45