Swift: '(String) -> AnyObject?'没有名为 'subscript' 的成员
Swift: '(String) -> AnyObject?' does not have a member named 'subscript'
我正在尝试将 PFUser(从 Parse.com)转换为 [String : AnyObject] 类型的字典,但我收到以下错误,这让我很困惑。我做了 google 搜索并找到了以下两个 SO 问题,但是仍然没有帮助解决我的问题:
错误:
'(String) -> AnyObject?' does not have a member named 'subscript'
找到这两个帖子:
,
relevant SO post 2
我的 PFUser 有键:fullName、email、latitude、经度和linkedInUrl.
由于上述键值的类型是 String 和 Double 的混合。所以我正在尝试创建以下词典:
var userData : [String: AnyObject] = [
"fullName" : pfUser.valueForKey("fullName") as? String,
"latitude" : pfUser.valueForKey("latitude") as? Double,
"longitude" : pfUser.valueForKey("longitude") as? Double,
"email" : pfUser.valueForKey("email") as? String,
"linkedInUrl" : pfUser.valueForKey["linkedInUrl"] as? String
]
我的XCode版本是6.4。我感谢您的帮助。
您声明的 userData
类型有误。它必须是 [String: AnyObject?]
因为你的值是可选的。
并且不要忘记将这一行 "linkedInUrl" : pfUser.valueForKey["linkedInUrl"] as? String
更改为这一行 "linkedInUrl" : pfUser.valueForKey("linkedInUrl") as? String
。
您的代码将是:
var userData : [String: AnyObject?] = [
"fullName" : pfUser.valueForKey("fullName") as? String,
"latitude" : pfUser.valueForKey("latitude") as? Double,
"longitude" : pfUser.valueForKey("longitude") as? Double,
"email" : pfUser.valueForKey("email") as? String,
"linkedInUrl" : pfUser.valueForKey("linkedInUrl") as? String
]
您当前的代码有两个错误
第一个是,使用 ( )
而不是 [ ]
来使用下一行中的键获取值。
"linkedInUrl" : pfUser.valueForKey["linkedInUrl"] as? String
第二个是,使用感叹号来展开可选的。
您的代码应如下所示。
var userData : [String: AnyObject] = [
"fullName" : pfUser.valueForKey("fullName") as! String,
"latitude" : pfUser.valueForKey("latitude") as! Double,
"longitude" : pfUser.valueForKey("longitude") as! Double,
"email" : pfUser.valueForKey("email") as! String,
"linkedInUrl" : pfUser.valueForKey("linkedInUrl") as! String
]
另一个解决方案是,将字典声明为 [String: AnyObject?]
以保存可选值。
我正在尝试将 PFUser(从 Parse.com)转换为 [String : AnyObject] 类型的字典,但我收到以下错误,这让我很困惑。我做了 google 搜索并找到了以下两个 SO 问题,但是仍然没有帮助解决我的问题:
错误:
'(String) -> AnyObject?' does not have a member named 'subscript'
找到这两个帖子:
我的 PFUser 有键:fullName、email、latitude、经度和linkedInUrl.
由于上述键值的类型是 String 和 Double 的混合。所以我正在尝试创建以下词典:
var userData : [String: AnyObject] = [
"fullName" : pfUser.valueForKey("fullName") as? String,
"latitude" : pfUser.valueForKey("latitude") as? Double,
"longitude" : pfUser.valueForKey("longitude") as? Double,
"email" : pfUser.valueForKey("email") as? String,
"linkedInUrl" : pfUser.valueForKey["linkedInUrl"] as? String
]
我的XCode版本是6.4。我感谢您的帮助。
您声明的 userData
类型有误。它必须是 [String: AnyObject?]
因为你的值是可选的。
并且不要忘记将这一行 "linkedInUrl" : pfUser.valueForKey["linkedInUrl"] as? String
更改为这一行 "linkedInUrl" : pfUser.valueForKey("linkedInUrl") as? String
。
您的代码将是:
var userData : [String: AnyObject?] = [
"fullName" : pfUser.valueForKey("fullName") as? String,
"latitude" : pfUser.valueForKey("latitude") as? Double,
"longitude" : pfUser.valueForKey("longitude") as? Double,
"email" : pfUser.valueForKey("email") as? String,
"linkedInUrl" : pfUser.valueForKey("linkedInUrl") as? String
]
您当前的代码有两个错误
第一个是,使用 ( )
而不是 [ ]
来使用下一行中的键获取值。
"linkedInUrl" : pfUser.valueForKey["linkedInUrl"] as? String
第二个是,使用感叹号来展开可选的。
您的代码应如下所示。
var userData : [String: AnyObject] = [
"fullName" : pfUser.valueForKey("fullName") as! String,
"latitude" : pfUser.valueForKey("latitude") as! Double,
"longitude" : pfUser.valueForKey("longitude") as! Double,
"email" : pfUser.valueForKey("email") as! String,
"linkedInUrl" : pfUser.valueForKey("linkedInUrl") as! String
]
另一个解决方案是,将字典声明为 [String: AnyObject?]
以保存可选值。