键入'(String,AnyObject)'在swift中没有下标成员

时间:2016-11-10 12:22:01

标签: ios swift

我正在使用此行获取数据

let contentViewVerticalConstraint=NSLayoutConstraint.constraints(withVisualFormat: "V:|[contentView(300)]", options: [], metrics: nil, views: viewsDictionary)

我想从字典中过滤数据,所以我正在使用此代码

 let productDict  = arrProductCart[sender.tag] as! [String: AnyObject]

它给了我错误 Type'(String,AnyObject)'没有下标成员

我需要将[String:AnyObject]转换为[String:String]吗? 怎么做。

1 个答案:

答案 0 :(得分:2)

很可能你想要过滤arrProductCard数组而不是productDict,这是没有意义的。试试这个:

let filteredProducts = arrProductCard.filter{
    guard let groupId = $0["groupid"] as? String else { return false }
    return groupId != "1"
}

你应该尽可能避免强行打开。请注意,如果字典中没有groupid值或者字符串不是字符串,则过滤器闭包内的代码将崩溃。

修改

如果您出于某种原因使用NSMutableArray,则可以使用谓词对其进行过滤:

let mutableArray = NSMutableArray(array: [["groupid": "1"], ["groupid": "2"]])    
let groupIdPredicate = NSPredicate(format: "groupid != %@", "1")
mutableArray.filter(using: groupIdPredicate)

但是,我强烈建议使用Swift原生集合。