Init已在Swift 3中重命名为init(描述)错误

前端之家收集整理的这篇文章主要介绍了Init已在Swift 3中重命名为init(描述)错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这段代码Swift 2中工作正常:
guard let userData = responseData["UserProfile"] as? [String : AnyObject] else { return }

var userProfileFieldsDict = [String: String]()
if let profileUsername = userData["Username"] as? NSString {
  userProfileFieldsDict["username"] = String(profileUsername)
}
if let profileReputationpoints = userData["ReputationPoints"] as? NSNumber {
  userProfileFieldsDict["reputation"] = String(profileReputationpoints)
}

但是,在Swift 3中,它会在userProfileFieldsDict [“reputation”]上引发错误

init has been renamed to init(describing:)

我的问题是为什么它会触发该行而不是userProfileFieldsDict [“username”]赋值行,以及如何修复它?我假设它是因为我正在将一个NSNumber转换为String,但我无法理解为什么这很重要.

NSNumber是一个非常通用的类.它可以是从bool到long甚至是char的任何东西.所以编译器真的不确定确切的数据类型,因此它无法调用正确的String构造函数.

而是使用String(describe :)构造函数,如下所示

userProfileFieldsDict["reputation"] = String(describing: profileReputationpoints)

关于它,这里有更多info.

原文链接:https://www.f2er.com/swift/319471.html

猜你在找的Swift相关文章