【发布时间】:2014-07-08 16:21:18
【问题描述】:
我在 Xcode 6 上使用带有 CoreData 的 Swift。
我已经阅读了发行说明并看到了这个issue,关于确保使用模块名称(应用名称)标记核心数据模型,以便您可以在运行时将NSManagedObject 转换为您的模型类型.
当我这样做时,我可以让应用程序正常运行(很好!)。但是,我的问题是,当我尝试 test 相同的代码时,只要演员发生Swift dynamic cast failed 错误(坏:(),测试总是会崩溃。这使得测试我的应用。
在构建应用程序以进行测试与运行时,我们使用的模块名称是否有任何影响?
提前感谢您的任何指点...
跟进:
这并不理想:
如上所述,为了让 Swift 使用 Core Data 模型,你需要用你的应用程序的名称来装饰类名。这适用于构建应用程序,但测试以不同的应用程序名称运行!这意味着您需要进入数据建模器并将该类名称从 myAppname.myEntity 更改为 myAppnameTests.myEntity,然后才能在测试使用或调用时按名称使用这些实体。
【问题讨论】:
-
尝试用@objc(MyClassName) 修饰类名。这将绕过正常的名称修改。那么您不必担心数据模型中的模块名称。
-
如果我用 swift 编写实体类,然后使用
objc(xxx)装饰它们 - 每当我尝试在其他 swift 代码中使用具有该名称的实体时,我都会收到动态转换错误...令人沮丧。 .. -
我已经在这个问题中尝试了“跟进”,但它似乎在 Xcode 6.3.1 中不起作用。 Xcode 6.3.1 中有解决方案吗?
-
您好,我在使用 swift 4 的 xcode 9 中遇到了同样的问题,您解决了这个问题吗?