【发布时间】:2015-04-23 18:29:29
【问题描述】:
我创建了UICollectionViewController 的子类并将其命名为LibraryCollectionViewController,并标记了项目和测试的两个复选框。它的故事板ID是LibraryCollectionViewController,并在界面生成器上设置其对应的类。
作为 Swift 和 iOS 测试 的新手,我尝试在我的测试用例中实例化所述视图控制器,如下所示:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let libraryCollectionVC = storyboard.instantiateViewControllerWithIdentifier("LibraryCollectionViewController") as! LibraryCollectionViewController
我收到以下错误:
Could not cast value of type 'MyApp.LibraryCollectionViewController' (0x1010b01f0) to 'MyAppTests.LibraryCollectionViewController' (0x10bd7f580).
所以很明显它不是强制转换的,但由于我还是 Swift 的新手,我发现自己无法确定错误本身是否是由以下原因引起的:
- 我在创建子类时做错了,我引用了另一个子类(Ergo the MyApp.[vc] vs MyAppTests.[vc])
- 使用
as!的转换不正确 - 任何其他原因
任何帮助将不胜感激,在此先感谢。
更新 1: 当我创建视图控制器时,最后一步在 Target 标题下显示了 2 个复选框,我启用了它们,这可能是原因?
【问题讨论】:
-
你在IB中定义了自定义类吗? (顺便说一句,我认为它应该是 return UIStoryboard(name: "Main", bundle: NSBundle.mainBundle().)
-
在 IB 中,我将类(在“自定义类”标题下方)设置为 LibraryCollectionViewController。我会试试捆绑包
-
@matthias 使用 bundle 给出了相同的结果 :(
-
我认为原因是您启用了两者(也许)。 MyAppTests 尝试禁用这个
-
也许这有助于 UIStoryboard(name: "Main", bundle: NSBundle(forClass: self.dynamicType)) iosmike.com/2014/08/unit-testing-viewcontrollers-in-swift.html