自动完成没有在Xcode 7.2.1工作

问题描述:

Tile.swift有一个init:自动完成没有在Xcode 7.2.1工作

init(cellFrame:CGRect, padding:CGFloat, text: String, index: TileIndex, boundRect: CGRect) { 
    .... 
} 

,但我看不到在init旧版本(从以前保存)()我的单元测试文件试图自动完成它。

enter image description here

我已经清理的项目,但这并不带来自动更正符号是最新的。

我清理了派生数据,事情变得更糟。重新启动XCode后,结果相同。

enter image description here

其他症状。
此文件上的自动完成功能一次起作用,并且在Tile类的重构过程中发生了一些变化(我不知道是什么)。

瓷砖类型从主要产品目标文件中的文件可见(自动完成工作),但不在测试目标文件中。

我错过了什么正确的魔法序列?

+0

编译器不知道类型 - 我认为它的标题。您忘记在界面构建器中声明该类型,或者某些var具有比您认为的类型更多的类型。 – user965972

+0

@ user965972 Tile类甚至不被界面构建器使用。它更像是一个模型类(我正在移除视图组件,使其更像ViewModel类)。 – SilentNot

+1

我不知道你的代码到底是什么问题,只是当我看到一个>这意味着我忘了在某处定义一个类型,或者我正在处理另一种类型而不是预期的类型。因此,请检查该瓷砖是否具有您期望的类型。 – user965972

发现问题。在进行重构时,有许多期望的编译错误。 Tile类文件编译成OK,但该模块中的另一个类未能编译。我只是想让我的单元测试工作,所以我忽略了其他文件错误并清理了单元测试文件中的错误。

在处理内容时,我没有注意到在测试文件的最高测试中出现错误。

@testable import myAppModule错误:没有这样的模块'myAppModule'。

显然,任何文件中的任何错误都将隐藏单元测试文件中的整个模块。

解决方案:从被测模块中删除所有编译错误,以便unitTest文件查看模块。

我理解它,但我不喜欢它。

我想知道苹果可以改善这种行为吗?评论欢迎。

+0

是的。请向Apple提交一个错误,因为编译错误不应该完全破坏自动完成功能。最有趣的事情之一,特别是,你看到,在重构过程中,当各种各样的事情可以被打破。 –