Ios 如何在Swift中访问深度嵌套的对象

Ios 如何在Swift中访问深度嵌套的对象,ios,swift,dictionary,Ios,Swift,Dictionary,我收到来自FB Graph请求的API响应,在访问“数据”层之外的名称、描述、开始时间、id等时遇到困难 ({ events = { data = ( { description = "This is the description"; "end_time" = "2020-06-14T01:00:00-0400"; id = 234258508603

我收到来自FB Graph请求的API响应,在访问“数据”层之外的名称、描述、开始时间、id等时遇到困难

 ({
events =     {
    data =         (
                    {
            description = "This is the description";
            "end_time" = "2020-06-14T01:00:00-0400";
            id = 234258508603994942;
            name = "Event 1";
            place =                 {
                id = 102184499823699;
                location =                     {
                    city = Montreal;
                    country = Canada;
                    latitude = "45.5038";
                    longitude = "-73.5744";
                    state = QC;
                };
                name = "Montreal, Quebec";
            };
            "rsvp_status" = attending;
            "start_time" = "2020-06-11T22:00:00-0400";
        },
                    {
            description = "Doors open at 6pm All methods of delivery will be delayed;
            id = 2456759751111373;
            name = "John Oliver";
            place =                 {
                id = 203030439809517;
                location =                     {
                    city = "San Francisco";
                    country = "United States";
                    latitude = "37.79118";
                    longitude = "-122.41293";
                    state = CA;
                    street = "1111 California St";
                    zip = 94108;
                };
                name = "The Masonic";
            };
            "rsvp_status" = unsure;
            "start_time" = "2020-01-02T19:00:00-0800";
        }
    );
    paging =         {
        cursors =             {
            after = QVFIUnlNRzFiTmwtQk9BRFVmN09OUkxHNWkxzQXNSOGJsWURQb21IdFFITHVXdU5xUC1jTTd5Tml5YVNiS3kyejNWYUk5czJ5dmtn;
            before = QVFIUnE3TVA2S21VVVNNbXlDWGZA2ZAFZAUTXU5h0NGRBS0EtUHB6QWpJNURMU1Q5dTRQV2RhVWJlYS01U3RtdUh0RGcxaDlzOTIzNzF2eTln;
        };
    };
};
id = 2624126090194735;
})
下面是无法访问“数据”对象的代码


我确信这是显而易见的,它不会进入“数据”字典,这会阻止我获取事件详细信息,如描述、id、名称等。我如何访问“数据”“?

正如@RajeshKumar在评论中提到的,
数据
是一个字典数组。然后可以循环遍历该数组,以获得每个字典和相关值

if let dictionary = result as? [String: Any] {
    if let dictionary1 = dictionary["events"] as? [String: Any]{
        if let dataList = dictionary1["data"] as? [[String: Any]] {
           dataList.forEach { dictionary in 
               let eventDescription = dictionary["description"] as? String
               let fbEventId = dictionary["id"] as? String
               let eventName = dictionary["name"] as? String
               let eventStart = dictionary["start_time"] as? String
               print(eventDescription)
               print(fbEventId)
               print(eventName)
               print(eventStart)
           }
        }
    }
}

让nestedDictionary=dictionary1[“数据”]作为?[String:Any]
应该是
让nestedDictionary=dictionary1[“数据”]as?[[String:Any]]
您好,我认为在您的JSON响应中,键缺少双逗号“”,比如id=2624126090194735;应为“id”=2624126090194735;请check@RajeshKumarR当我这样做时,我得到了以下错误:不能用'String'类型的参数为'[[String:Any]]'类型的值下标。@dakrawat我选中了,只在一些键上加引号(“”),而不是在所有键上加引号,不知道为什么,但这是我从fbi那里得到字典的方式,如果您可以使用可编码协议进行json解析,那么使用可选链接就很容易了。就是这样!非常感谢。
if let dictionary = result as? [String: Any] {
    if let dictionary1 = dictionary["events"] as? [String: Any]{
        if let dataList = dictionary1["data"] as? [[String: Any]] {
           dataList.forEach { dictionary in 
               let eventDescription = dictionary["description"] as? String
               let fbEventId = dictionary["id"] as? String
               let eventName = dictionary["name"] as? String
               let eventStart = dictionary["start_time"] as? String
               print(eventDescription)
               print(fbEventId)
               print(eventName)
               print(eventStart)
           }
        }
    }
}