Xcode警告 - 变量从未发生变异

时间:2017-03-24 15:51:56

标签: ios swift

我知道这是新手问题,但我无法在stackoverflow或google上找到答案。

我开始用Swift 3语言编写项目。这是我的模型类:

class VKUserProfile: NSObject {
    var userId: NSNumber?
    var userName: String?
    var userEmail: String?
    var userMobilePhone: String?
    var userPictureUrl: URL?
}

然后我在另一个班级使用它:

private func convert(user: Dictionary<String, Any>) -> VKUserProfile {
    var currentUser: VKUserProfile = VKUserProfile()
    currentUser.userId = user["id"] as? NSNumber
    return currentUser
}

Xcode在线警告我&#34; var currentUser:VKUserProfile = VKUserProfile()&#34;。好的,但当我把它改成&#34;让currentUser:VKUserProfile = VKUserProfile()&#34; - 我无法设置任何属性(对象为空)。所以有人可以形容我这个过程,为什么Xcode警告我以及如何解决这个问题。

更新: 以下是currentUser出租时currentUser变量的屏幕截图:

let

当currentUser为var:

时,这是currentUser变量的屏幕截图

enter image description here 提前谢谢!

1 个答案:

答案 0 :(得分:4)

当你使用时似乎:

lhs

其他代码正确填写var currentUser = VKUserProfile() ,您可以在打印currentUser时看到这些值。

但是使用currentUser会发出警告,因为您实际上从未重新分配var

因此,您正确地将currentUser更改为var并且不做任何其他更改。但是现在当您打印let时,您看不到与使用currentUser时相同的输出,如您在问题中发布的屏幕截图所示。

这似乎是Xcode调试器的一个问题。

打印var的各个属性会显示预期的输出。

所以最后,这只不过是Xcode调试器中的一个错误。即使将currentUser更改为var,您的代码仍然可以。