为什么我在使用 valueForKey
时会出错...我正在使用与 objectiveC
相同的技巧 ...
在ObjectiveC
中,代码为
self.strSubscribe =[responseObject[@"subscribe"] valueForKey:@"subscribe_ids"];
在 Swift
中,代码是
self.strSubscribe = responseObject["subscribe"].valueForKey["subscribe_ids"] as! String
我像这样声明变量
var arraySubCategory : NSMutableArray! = NSMutableArray()
var strSubscribe:String!
我尝试从下面的响应中获取值
{
subscribe =
{
"subscribe_ids" = "1,14";
}
}
编辑 它使用 Amit 和 Eric 的解决方案工作,但现在用于跟踪数据
{
data = (
{
"subscribe_ids" = "1,14";
}
);
}
let dictionary = responseObject["data"][0] as! Dictionary<String,AnyObject>
self.strSubscribe = dictionary["subscribe_ids"] as! String
或//
if let dic = responseObject["data"][0] as? [String:String], let ids = dic["subscribe_ids"] {
self.strSubscribe = ids
}
但它给我错误:
could not find member 'subscript'
最佳答案
Swift 不知道 responseObject["subscribe"]
的类型,你必须稍微帮助一下编译器;例如:
if let dic = responseObject["subscribe"] as? [String:String], let ids = dic["subscribe_ids"] {
self.strSubscribe = ids // "1,14"
}
更新:
仍然是同样的问题:编译器不知道 responseObject["data"]
的类型,所以当您尝试访问下标时出现错误(因为您 知道它是数组中的字典,但编译器不知道)。
一种解决方案是通过在 if let
条件中声明一个字典数组来将类型提供给编译器:
if let arr = responseObject["data"] as? [[String:String]], let ids = arr[0]["subscribe_ids"] {
self.strSubscribe = ids
}
请注意,它是 [[String:String]]
(字典数组),而不是 [String:String]
(字典)。
关于ios - 在 swift 中使用 valueForKey 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30186009/