Filter a nested array and dictionary

General Tech Bugs & Fixes 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

 

I am trying to filter the array which consist of array and dictionary inside it. I want to filter based on the type of the service and then whose isPrimaryMailbox is Yes under attributes array. This is what I have done:-

 
let services = Manager.realm().objects(Service.self).filter("type = %@", "MAILBOX")

        let serviceWithPrimaryEmail = services.filter({$0.attributes.first?.value == "Yes"})

But this is showing the data which has isPrimaryMailbox value is No

Below is the json response :-

{
  "data": {
    "cust": [
      {
        "customerId": "2040349110",
        "serv": [
          {
            "bill": "2010007656959",
            "services": [
              {
"type": "MOBILE",
                "status": "ACTIVE",
                "plan": {
                  "name": "Mobil"
                },
                "addOns": [
                  {
                    "status": "Active"
                  }
                ],
                "hardware": [
                  {
                    "type": "HANDSET"
                  }
                ]
              },
              {
                "type": "MOBILE",
                "plan": {
                  "name": "Mobile Service"
                },
                "addOns": [
                  {
                    "status": "Active"
                  }
                ],
                "hardware": [
                  {
                    "type": "HANDSET",
                  }
                ]
              },
              {
                "type": "MAILBOX",
                "plan": {
                  "name": "Service"
                },
                "attributes": [
                  {
                    "name": "mailboxSize",
                    "value": "1 GB"
                  },
                  {
                    "name": "isPrimaryMailbox",
                    "value": "Yes"
                  }
                ]
              },
              {
                "type": "MAILBOX",
                "status": "ACTIVE",
                "plan": {
                  "name": "Service"
                },
                "attributes": [
                  {
                    "name": "mailboxSize",
                    "value": "1 GB"
                  },
                  {
                    "name": "isPrimaryMailbox",
                    "value": "No"
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }

                                                
                                                
0 views
0 shares
profilepic.png
manpreet 2 years ago

You are always considering the first attribute, you have to refilter the $0.attributes to return isPrimaryMailbox and then check its value.


0 views   0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.