Xcode不会自动完成Struct的成员初始值设定项

时间:2016-01-30 12:20:34

标签: xcode swift

我在我的Xcode项目文件中的Point.swift中定义了这样的结构:

struct Point {
    var x: Int
    var y: Int
}

如果我试图从另一个文件初始化Point结构,Xcode不会自动完成成员初始化程序。即使我像某些朋友建议的那样重新启动了机器。

screenshot

但如果我在同一个文件或游乐场中定义初始化新实例,那么自动完成工作正常。

screenshot

如何修复此自动填充问题?

6 个答案:

答案 0 :(得分:12)

这似乎只是Xcode中的一个错误。第一次在另一个文件中使用实例时,Xcode不提供自动完成功能。但是,第二次使用它确实如此。

这是我所看到的奇怪行为的演示。即使保存了Point.swift文件,我第一次在Point中使用ViewController.swift也不会自动完成,但第二次会自动完成:

Demo of strange autocomplete behavior

这是Xcode 7.2。

答案 1 :(得分:7)

此错误在Xcode 10中仍然存在。除了最佳答案:您可以使用显式.init进行自动完成,然后删除.init

  1. 获取自动完成功能以使用显式init:

Point.init(x: x, y: y)

  1. 删除.init,您将得到预期的代码:

Point(x: x, y: y)

答案 2 :(得分:5)

正如МихаилБабаев还说的那样,我仍然在Xcode 10.1中看到了这个问题。

打字 Point.init(调出默认的初始化程序。 然后,您可以删除“ init”

答案 3 :(得分:3)

保存文件。

一旦保存了Point.swift

,Xcode将自动完成自动填充

我知道它看起来很奇怪,但是虽然Xcode识别结构并在编辑文件时正确地启用语法着色,但在结构源文件被明确保存之前它仍然不会完全自动完成(文件图标将改变其背景颜色)

我过去曾经有过这种行为,我只能在一个示例项目中重现它。

答案 4 :(得分:1)

如果键入Point.init(,则Xcode建议初始化自动完成。

更多令人兴奋的新闻:从 Xcode 10.2 开始,这似乎是固定的,现在只要Point(提示一下Xcode建议使用init方法即可。享受它。

答案 5 :(得分:0)

我在Xcode版本11.4.1(11E503a)中遇到了同样的问题。对我来说,问题是我的结构定义在与应用程序目标不同的目标中。该目标已导入到我试图在其中创建该结构实例的文件中(在应用程序目标中)。但是,Xcode从未能够自动完成该结构。我通过将结构的定义移动到应用程序目标来解决了这个问题,并按预期方式自动完成了成员初始化程序。

我们玩得开心吗?