KML
KML

Reputation: 2322

How to index into Array of Dictionaries

I have an object that looks like this in the console. It seems like an array with a dictionary inside. How can I get to the address field?

Optional((
        {
        address = "[email protected]";
        verified = 1;
    }
))

The object comes from this object:

<METDocument key: <collection: users, ID: KTsCySacEAiz3eDnf>, fields: {
    emails =     (
                {
            address = "[email protected]";
            verified = 1;
        }
    );
    profile =     {
        address =         {
            city = Oslo;
            country = nor;
            lineOne = "address";
            lineTwo = "";
            zip = 0264;
        };
        birthdate = "1985-09-01 23:00:00 +0000";
        card =         {
            last4 = 4242;
            verified = 1;
        };
        filledOut = 1;
        gender = Male;
        name =         {
            first = "Elon";
            last = "Musk";
        };
        phone = 911;
        validated = 1;
    };
}>

I access the emails key by this method:

let emails = users.allDocuments[0].valueForKey("emails")

Upvotes: 0

Views: 43

Answers (1)

vadian
vadian

Reputation: 285039

The content of the object is an optional array.

There are two options:

  • Safe access:

    if let emails = users.allDocuments[0].objectForKey("emails") where emails.count > 0 {
      if let address = emails[0]["address"] as? String {
        print(address)
      }
    }
    
  • If it's guaranteed that the dictionary in the array and the key address exists:

    let emails = users.allDocuments[0].objectForKey("emails")!
    let address = emails[0]["address"] as! String
    

Upvotes: 1

Related Questions