Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift Xcode 12慢速生成一个文件_Swift_Xcode - Fatal编程技术网

Swift Xcode 12慢速生成一个文件

Swift Xcode 12慢速生成一个文件,swift,xcode,Swift,Xcode,我的Xcode项目中的数据结构与此类似: struct Group: { let name: String var items: [Thing] } struct Thing: { let description: String let variants: [Thing]? } var data: [Group] = [Group(name: "Group 1", items: [Thing(description: &quo

我的Xcode项目中的数据结构与此类似:

struct Group: {
  let name: String
  var items: [Thing]
}

struct Thing: {
  let description: String
  let variants: [Thing]?
}

var data: [Group] = 
    [Group(name: "Group 1",
          items: [Thing(description: "Thing 1", variants: nil),
                  Thing(description: "Thing 2", variants: nil),
                  ... ]),
     Group(name: "Group 2",
          items: [Thing(description: "AnotherThing 1", variants: [Thing(description: "Variant Thing1)",
                                                                  Thing(description: "Variant Thing2)",
                                                                  ... ]),
                  Thing(description: "AnotherThing 2", variants: [Thing(description: "Variant Thing 101"),
                                                                  Thing(description: "Variant Thing 102"),
                                                                  ... ]),
      ... ])]
总共有大约10组,包含大约3200件物品;在“items”数组和“variants”数组中,对象的分布是相等的

Xcode需要3到5分钟来编译这个文件。我该怎么做才能将此缩短到合理的时间


旁白:除了编译速度慢之外,这种数据结构还使Xcode分析器变得疯狂。探查器通常会占用所有交换空间并使机器崩溃。

尝试将分配更改为

var data: [Group] = [Group(name: "Group 1", ....
根据我的经验,这些减速主要是由于类型推断,显式指定类型会有很大帮助


如果这不起作用,请遵循Joakim Danielson的建议。

我并没有完全按照matt的建议去做,但他的建议让我找到了一种方法来做,而且不要太难看

struct Thing: {
  let description: String
  var variants: [Thing]?
}
            
struct Group: {
  let name: String
  var items: [Thing]
}
        
let group1Things: [Thing] = [
  Thing(description: "Thing 1", variants: nil),
  Thing(description: "Thing 2", variants: nil),
  ... ]
        
let group1: Group = Group(name: "Group 1", items: group1Things)
        
let group2Things: [Thing] = [
  Thing(description: "AnotherThing 1", variants: [Thing(description: "Variant Thing1)",
                                                  Thing(description: "Variant Thing2)",
                                                  ... ]),
  Thing(description: "AnotherThing 2", variants: [Thing(description: "Variant Thing 101"),
                                                  Thing(description: "Variant Thing 102"),
                                                  ... ]

let group2: Group = Group(name: "Group 2", items: group2Things)
        
let data: [Group] = [group1, group2, ...]

这使编译时间从3-5分钟缩短到30秒。我可以接受。我可能可以通过分解“变体”数组来进一步了解它。

我不知道该如何处理该结构,但我想知道如果将其存储为json,然后在运行时对其进行解码,会发生什么?编译是即时的,我想,但我不知道解码是否会成为一个问题。我会尝试一下,但我真的希望有一个解决方案的结构。或者至少了解问题所在。只需使用连续的附录,而不是大的文本。请参阅和。基本上,编译器不喜欢大的文本,所以不要写它们。实际上我已经试过了,但没有用。我将相应地编辑原始帖子。毫无疑问,类型推断是个问题,因为我尝试了您在这里和那里看到的Xfrontend标志;我就是不知道怎么修。