0

我正在构建一个简单的 Swift 应用程序,它需要一个小的“立方体”数据;根据犬种(索引 11)和国家地区(索引 0),我必须阅读 10 个整数。我已将其作为数组数组完成。(见下文)

当应用程序运行时,一切都按预期工作。

然而,当 Xcode 正在构建时,索引需要几分钟/永远不会完成,这不仅是一个痛苦,因为它延迟了更改/构建/测试周期,而且它还会阻止所有的自动完成和输入提前完成。我添加的行越多,它似乎越慢,我有更多的行要添加......

只需注释掉一个 var 就可以使前面的类型工作,但当然它不会编译,因为编译器正在寻找该数据结构。

1)有没有更好的方法来存储数据(我还没有进入Coredata或数据库(还)?

2) 这是需要向 Apple 报告的 Xcode 错误吗?

我已经尝试清理项目和派生文件,但没有成功。

var akcTable = [
    [ 1, 2, 2, 4, 6, 6,10,16,18,28,35, "Spaniels (English Springer)"],
    [ 2, 2, 2, 4, 5, 7, 8, 9,13,17,20, "Spaniels (English Springer)"],
    [ 3, 2, 2, 3, 4, 4, 7, 7, 9,12,14, "Spaniels (English Springer)"],
    [ 4, 2, 2, 4, 4, 6, 6,11,14,20,28, "Spaniels (English Springer)"],
    [ 5, 2, 2, 3, 4, 5, 7, 6, 9,10,12, "Spaniels (English Springer)"],
    [ 6, 2, 2, 4, 4, 6, 6, 8,11,11,17, "Spaniels (English Springer)"],
    [ 7, 2, 2, 4, 5, 5, 7, 6, 9, 9,14, "Spaniels (English Springer)"],
    [ 8, 2, 2, 5, 7, 7,11,11,15,18,22, "Spaniels (English Springer)"],
    [ 9, 2, 2, 4, 5, 6, 7, 8,12,13,20, "Spaniels (English Springer)"],
    [10, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, "Spaniels (English Springer)"],
    [11, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, "Spaniels (English Springer)"],
    [12, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, "Spaniels (English Springer)"],
    [13, 2, 2, 3, 6, 6, 9, 7,11,10,14, "Spaniels (English Springer)"],
    [14, 2, 2, 4, 3, 5, 6, 6, 7, 7, 9, "Spaniels (English Springer)"],
    [15, 2, 2, 3, 4, 5, 5, 7, 9,11,18, "Spaniels (English Springer)"],
    [ 1, 2, 2, 5, 5, 8, 7, 9, 9,12,12, "Brittany"],
    [ 2, 2, 2, 4, 4, 5, 5, 7, 7,11,10, "Brittany"],
    [ 3, 2, 2, 4, 4, 5, 5, 6, 7,10,11, "Brittany"],
    [ 4, 2, 2, 4, 4, 6, 7, 7, 8,10,10, "Brittany"],
    [ 5, 2, 2, 3, 4, 4, 5, 6, 7,10,11, "Brittany"],
    [ 6, 2, 2, 3, 4, 4, 5, 7, 6,11,11, "Brittany"],
    [ 7, 2, 2, 5, 5, 6, 8, 8,10,10,14, "Brittany"],
    [ 8, 2, 2, 4, 5, 6, 8, 8,13,11,16, "Brittany"],
    [ 9, 2, 2, 4, 5, 6, 7, 7, 9,10,15, "Brittany"],
    [10, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, "Brittany"],
    [11, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, "Brittany"],
    [12, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, "Brittany"],
    [13, 2, 2, 3, 5, 4, 6, 6, 8, 7,11, "Brittany"],
    [14, 2, 2, 4, 3, 5, 4, 6, 6, 8, 7, "Brittany"],
    [15, 2, 2, 5, 5, 7, 7, 8, 9,12,16, "Brittany"]
]
4

3 回答 3

1

Swift 编译器无法推断akcTable变量的类型,这可能是编译器的一个错误。无论如何,您需要明确说明。这在操场上有效:

var akcTable: [[AnyObject]] = [
    [ 1, 2, 2, 4, 6, 6,10,16,18,28,35, "Spaniels (English Springer)"],
    ... etc

但它在命令行 Swift REPL 中不起作用(错误是“表达式类型不明确,没有更多上下文”)。这适用于 REPL 和游乐场:

var akcTable: [[Any]] = [
    [ 1, 2, 2, 4, 6, 6,10,16,18,28,35, "Spaniels (English Springer)"],
    ... etc
于 2015-10-27T22:37:02.867 回答
0

您可以从 JSON 加载它。使用 NSJSONSerialization。

do
{
  let object:NSArray? = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments)
  //user
} catch let caught as NSError {
  //log
} 
于 2015-10-27T22:36:50.020 回答
0

虽然这两个答案都是正确的,但您确实应该为这些数据制作模型对象。从长远来看,它将为您节省大量时间和头痛。就像是:

class Dog {
    var name: String?
    var breed: Int?
    ....
}

然后您可以初始化所有 Dog 实例,然后将它们放入一个数组中,这样let akcTable: [Dog] = ...

然后每个变量都将被命名,并且向前工作会容易得多(即,在处理数据时,您必须记住一堆随机索引。

于 2015-10-27T22:39:26.253 回答