gpt4 book ai didi

ios - 使用 swift 在大量 map 上的 xcode 中构建时间极长

转载 作者:行者123 更新时间:2023-11-30 13:44:50 25 4
gpt4 key购买 nike

我正在使用 xcode 7.2 和 swift 构建一个 iOS 应用程序。该应用程序使用由一系列 map 组成的数据库。它是一个包含所有元素(数组)及其相应同位素(数组内的图)的数据库。数组总共约 110 长,平均 map 约 23 长。因此,条目总数为 2600。构建该项目需要 20 多分钟。虽然数据库不小,构建项目应该不会花那么长时间,但 xcode 在做什么?

是我的语法错误还是我根本不应该使用映射数组并尝试使用 SQLite 解决方案?这会对数据库的读取速度产生巨大影响吗?

这是代码的摘录,整个文件看起来相同:

struct DataBase {
var knownIsotopes = [[Int:IsotopeData]]()
init() {
knownIsotopes.append([
1 : IsotopeData(name: "\(Constants.elementSymbols[0])\(1)", decayMode: [IsotopeData.DecayMode.BetaMinus], Z: 0, A: 1, halfLife: 613.9)])
knownIsotopes.append([
1 : IsotopeData(name: "\(Constants.elementSymbols[1])\(1)", decayMode: [IsotopeData.DecayMode.Stable], Z: 1, A: 1, halfLife: -1),
2 : IsotopeData(name: "\(Constants.elementSymbols[1])\(2)", decayMode: [IsotopeData.DecayMode.Stable], Z: 1, A: 2, halfLife: -1),
3 : IsotopeData(name: "\(Constants.elementSymbols[1])\(3)", decayMode: [IsotopeData.DecayMode.BetaMinus], Z: 1, A: 3, halfLife: 388789632),
4 : IsotopeData(name: "\(Constants.elementSymbols[1])\(4)", decayMode: [IsotopeData.DecayMode.NeutronEmission], Z: 1, A: 4, halfLife: 276),
5 : IsotopeData(name: "\(Constants.elementSymbols[1])\(5)", decayMode: [IsotopeData.DecayMode.NeutronEmission], Z: 1, A: 5, halfLife: 342),
6 : IsotopeData(name: "\(Constants.elementSymbols[1])\(6)", decayMode: [IsotopeData.DecayMode.NeutronEmission], Z: 1, A: 6, halfLife: 96)])
knownIsotopes.append([
3 : IsotopeData(name: "\(Constants.elementSymbols[2])\(3)", decayMode: [IsotopeData.DecayMode.Stable], Z: 2, A: 3, halfLife: -1),
4 : IsotopeData(name: "\(Constants.elementSymbols[2])\(4)", decayMode: [IsotopeData.DecayMode.Stable], Z: 2, A: 4, halfLife: -1),

最佳答案

如果您不想将此数据放入 PList 中(我同意这是这里的最佳实践),您可以通过使 IsotopeData 的初始化程序更智能一点(或创建一个方便的 init)来减轻编译器的工作量

用于组装名称的字符串插值对于编译器来说成本很高,并且可以完全由初始化程序在内部处理,因为它只是将元素的符号(元素编号 Z 的函数)与原子质量(本质上是A 的值:括号之间)。

您方便的 init 还可以接受一个简单的衰减模式值,而不是一个元素数组(它可以在内部创建一个数组)。

即使您的数据中存在这种模式的异常(exception)情况,减少大多数条目的负载也会有所帮助。

让编译器感到畏缩的另一件事是大型“文字”字典。该示例仅显示了 6 个条目的字典,但如果您有一些比这个大得多的字典,您可能需要以不同的方式初始化它们。

所有这些都会使编译器的工作变得更容易并减少编译时间。

[编辑] 从应用程序包中的 pList 读取的示例代码。

(将 pList 添加到 xCode 中的项目中)

let myList = NSDictionary(fromBundleFileName:"myList.plist") as! [String:NSDictionary]

根据您在 pList 中放入的内容,您的代码需要适本地使用字典(我的示例是字典的字典)。 pList 的第一层始终是字典,但您可以从各种键值中进行选择(包括嵌套字典)。

请注意,pList 实际上是 XML 文件,因此如果您尊重其标记结构,您也可以使用其他工具生成内容。

关于ios - 使用 swift 在大量 map 上的 xcode 中构建时间极长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35091029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com