ios - Json ऑब्जेक्ट की सरणी में एकाधिक चाबियों के लिए समान मान कैसे जांचें?



loops swift3 (1)

मैं Swift3 का उपयोग कर कैलेंडर पर काम कर रहा Swift3 । मुझे पता है कि विभिन्न कुंजी के लिए समान मूल्य सेट करना संभव है I

मुझे यह NSArray जो कि JSON ऑब्जेक्ट्स की Dictionary है:

if parsedData["status"] as! Int == 200 {

    if let Streams = parsedData["data"] as! [AnyObject]? {
       for Stream in Streams {
           print(Stream) 
       }



Stream result: {
"-" = 4;
1 = X;
10 = H;
11 = X;
12 = X;
13 = X;
14 = X;
15 = X;
16 = X;
17 = H;
18 = X;
19 = X;
2 = X;
20 = X;
21 = X;
22 = X;
23 = L;
24 = H;
25 = X;
26 = L;
27 = "-";
28 = "-";
29 = "-";
3 = H;
30 = "-";
4 = X;
5 = X;
6 = X;
7 = X;
8 = X;
9 = X;
H = 4;
L = 2;
X = 20;
blank = "";
classid = id;
classname = " (A)";
stdid = 1;
stdnm = "name"; }

यहां 1 से 31 महीने स्थिर होते हैं, महीने के आधार पर। एक्सएचएल पत्तियों, सामान्य पत्ते, और सामान्य हैं मुझे एक्स, एच, एल मूल्य और तिथियां प्राप्त करने की आवश्यकता है I

हालांकि, मुझे यह पता करने के लिए बिल्कुल तर्क नहीं है कि मान समान हैं या नहीं, फिर इसके मूल्य को उसी कुंजी में जोड़ें।

क्रिप्या मेरि सहायता करे। आपको धन्यवाद

https://code.i-harness.com


कृपया जांचें :

यह आपके JSON प्रारूप के लिए है

if let streams = parsedData["data"] as! [AnyObject]? {
    for stream in streams {
        let dict = stream as? [AnyHashable: Any]
        print(getValue(key: "H", dict: dict!))
        print(getValue(key: "L", dict: dict!))
        print(getValue(key: "X", dict: dict!))
    }
}

func getValue(key: String, dict: [AnyHashable: Any]) -> [Int] {
    return dict.filter { $0.value as? String == key }.flatMap { Int(String(describing: $0.key)) }
}

नीचे शब्दकोशों के लिए है

let dict = ["-": 4, 1: "X", 10: "H", 11: "X", 12: "X", 13: "X", 14: "X",
           15: "X", 16: "X", 17: "H", 18: "X", 19: "X", 2: "X", 20: "X",
           21: "X", 22: "X", 23: "L", 24: "H", 25: "X", 26: "L", 27: "-",
           28: "-", 29: "-", 3: "H", 30: "-", 4: "X", 5: "X", 6: "X", 7: "X",
           8: "X", 9: "X", "H": 4, "L": 2, "X": 20] as [AnyHashable : Any]

विकल्प 1 कुंजी को पास करें और तिथियों की तारीखें वापस करेंगी

    print(getValue(key: "H", dict: dict)) //[17, 10, 24, 3]
    print(getValue(key: "L", dict: dict)) //[26, 23]
    print(getValue(key: "X", dict: dict)) //[12, 25, 14, 20, 5, 15, 7, 11, 13, 16, 19, 22, 21, 9, 18, 2, 6, 4, 1, 8]

    func getValue(key: String, dict: [AnyHashable: Any]) -> [Int] {
        return dict.filter { $0.value as? String == key }.flatMap { $0.key as? Int}
    }

विकल्प 2 पास कई चाबियाँ पास करें और हर कुंजी के साथ जुड़े तारों के साथ शब्दकोश लौटेंगे

    print(getValue2(keys: ["H","L","X"], dict: dict))
    //["H": [17, 24, 3, 10], "L": [23, 26], "X": [14, 20, 13, 19, 21, 9, 6, 1, 12, 25, 5, 15, 7, 11, 16, 22, 18, 2, 4, 8]]

    func getValue2(keys: [String], dict: [AnyHashable: Any]) -> [String: [Int]] {
        var returnValue = [String: [Int]]()
        for key in keys {
            returnValue[key] = [Int]()
        }

        dict.forEach {
            if let v = $0.value as? String, returnValue[v] != nil, let k = $0.key as? Int {
                returnValue[v]!.append(k)
            }
        }
        return returnValue
    }





calendar