当我使用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
}
但它给了我错误:
找不到会员&#39;下标&#39;
答案 0 :(得分:2)
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]
(字典)。
答案 1 :(得分:0)
这样写。
let dictionary = responseObject["subscribe"] as! Dictionary<String, AnyObject>
self.strSubscribe = dictionary["subscribe_ids"] as! String
由于responseObject["subscribe"]
会给出AnyObject吗?输出和AnyObject没有任何名为valueForKey
的成员。