Xcode 6.1 - struct实例控制台错误

时间:2014-10-31 08:11:47

标签: ios swift

我是编程世界的初学者,我选择“Swift”作为我的第一个编程语言。到目前为止一切都很好,但现在我正在学习结构和实例,如何更新它们等等,我得到了神秘的控制台错误,我无法继续我的项目。

所以问题。

我创建了名为“Tiger.swift”的结构体。这个结构有属性,如名称,年龄等。在“viewController”中,我创建了一个名为myTiger的新变量,并尝试更新它的属性,并在我在控制台中创建的println命令出现奇怪的内容。它编译并告诉我“构建是成功的”,但在控制台中出现类似的东西。

“我的老虎的名字是:跳跳虎,它的年龄是3岁,它的年龄是3岁,它的图像是可选的()”

这个奇怪的事情是“可选的”。因为如果我以后想要更新我的实例,它就不会编译并向我显示:

“我的老虎的名字是:跳跳虎,它的年龄是3岁,它的年龄是3岁,它的图像是可选的() 致命错误:在展开Optional值时意外发现nil (lldb)“

有一个指向Git存储库(https://github.com/llinards/lionsandtigers)的链接,以防万一我没有快速解决方案或一个小错误。

感谢您的帮助!

谢谢!

1 个答案:

答案 0 :(得分:0)

我仔细研究了你的代码:

  1. 我将Tiger结构的image属性更改为可选,因为您没有模板或占位符图像(如果您有一个可以将初始值设置为该图像)。
  2. 你的故事板(包括你的IBOutlets)非常糟糕......我不知道是怎么回事,我以前从未见过这样的事情......
  3. 我上传了您项目here的工作副本(很难在此处显示与IB相关的内容,我刚刚删除并重新添加了您的标签和视图)。
  4. 我所做的相关代码更改如下:

    在你的Tiger模型对象(Tiger.swift)中,我改变了

    的最后一行
    var image = UIImage(named:"")
    

    var image: UIImage?
    

    您遇到的第一个错误是因为UUImage(named:"")返回nil。在Swift中,非可选类型绝不能为零。

    ViewController中,将Tiger初始化改为

    Tiger(age: 3, name: "Tigger", breed: "TOne", image: UIImage(named: "t1.jpg"))
    

    您的println()来电显示:

      

    My Tiger的名字是:Tigger,它的年龄是3岁,它的年龄是3岁,它的图像是可选的(UIImage:0x7f8d78f43c90)

    这是正确的,因为您的图片现在已包装成可选项。