我知道这是新手问题,但我无法在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变量的屏幕截图:
当currentUser为var:
时,这是currentUser变量的屏幕截图答案 0 :(得分:4)
当你使用时似乎:
lhs
其他代码正确填写var currentUser = VKUserProfile()
,您可以在打印currentUser
时看到这些值。
但是使用currentUser
会发出警告,因为您实际上从未重新分配var
。
因此,您正确地将currentUser
更改为var
并且不做任何其他更改。但是现在当您打印let
时,您看不到与使用currentUser
时相同的输出,如您在问题中发布的屏幕截图所示。
这似乎是Xcode调试器的一个问题。
打印var
的各个属性会显示预期的输出。
所以最后,这只不过是Xcode调试器中的一个错误。即使将currentUser
更改为var
,您的代码仍然可以。