打开选项时崩溃,即使它不是零

时间:2016-02-03 09:32:34

标签: ios swift

嘿,我的自定义UIView中有一个自定义的init方法,如下所示:

onTaskRemoved(Intent)

我将MyUser对象作为参数传递。当我初始化这个对象不应该是零,它甚至通过零检查并打印“用户不是无”。然而,当我强行解开它时,应用程序崩溃了。我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

你应该先打电话给超级,不要访问self,直到完成为止。您还可以通过稍微更改逻辑检查来缩短代码并减少函数调用:

init(frame: CGRect, otherUser: MyUser?) {
    super.init(frame: frame)
    if let otherUser = otherUser {
        print("THE USER IS NOT NIL")
        self.otherUser = otherUser
        nameLabel.text = otherUser.username ?? ""
        cityLabel.text = otherUser.cityName ?? ""
        ratingView.rating = otherUser.rating ?? 0
    }
}

很有可能用户不是问题,因为没有代码来创建标签,来自NIB的任何东西都还没有准备好。如果从NIB加载,也不会调用此init方法。

因此,您很可能真的需要查看标签和其他视图配置和/或实例化此视图的方式。您可能想要创建一个setter函数(或属性上的didSet)来配置这些细节。