我在Swift 3中循环有一点问题。我有一个JSONArray和一个JSONObject如下:
dataReqList [Any]:
[{
bezeich = "MORE SALT";
grpnr = 0;
nr = 1;
}, {
bezeich = "MORE SWEET";
grpnr = 0;
nr = 2;
}, {
bezeich = "MORE PEPPER";
grpnr = 0;
nr = 3;
}, {
bezeich = "MORE CHILLI";
grpnr = 0;
nr = 4;
}, {
bezeich = COLD;
grpnr = 0;
nr = 5;
}, {
bezeich = HOT;
grpnr = 0;
nr = 6;
}, {
bezeich = SMALL;
grpnr = 0;
nr = 7;
}, {
bezeich = LARGE;
grpnr = 0;
nr = 8;
}, {
bezeich = "MEDIUM COOKED";
grpnr = 0;
nr = 9;
}, {
bezeich = "WELL DONE";
grpnr = 0;
nr = 10;
}]
currArticle [Anyhashable:Any]:
Optional([AnyHashable("bezeich"): Fresh and Green Salad,
AnyHashable("special-request"): ["MORE PEPPER", "COLD", "HOT"]])
我想知道,如果JSONArray在JSONObject中与bezeich
具有相同String
,则如何在数组中打印键special-request
。我试过这个,但它不起作用:
for i in 0..<dataReqList.count {
if ( ((dataReqList[i] as? [AnyHashable: Any])? ["bezeich"] as! String) == (("\(currArticle?["special-request"]!)") as String) ) {
print (dataReqList[i])
}
任何答案和建议对我都有帮助。提前致谢
编辑: 我是斯威夫特的新人。我之前看过THIS,但它仍无效。
答案 0 :(得分:1)
键special-request
,currArticle
字典,其中Array
字符串为值,因此您无法直接将其与字符串进行比较,您可以像这样使用过滤器。
var filterArray = [[String:Any]]()
if let dataArray = dataReqList as? [[String:Any]],
let specialRequestArray = currArticle["special-request"] as? [String] {
filterArray = dataArray.filter { specialRequestArray.contains($0["bezeich"] as? String ?? "") }
print(filterArray)
}