我有来自 FB Graph Request 的 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;
})
这是无法获取“数据”对象的代码”
if let dictionary = result as? [String: Any] {
if let dictionary1 = dictionary["events"] as? [String: Any]{
if let nestedDictionary = dictionary1["data"] as? [String: Any]{
let eventDescription = nestedDictionary["description"] as? String
let fbEventId = nestedDictionary["id"] as? String
let eventName = nestedDictionary["name"] as? String
let eventStart = nestedDictionary["start_time"] as? String
}
}
}
正如我确信的那样,这不会进入“数据”字典,这会阻止我获取事件详细信息(例如描述、ID、名称等)的能力。我如何访问“数据” ?
最佳答案
正如@RajeshKumar 在评论中提到的,data
是一个字典数组。然后您可以遍历该数组以获取每个字典和相关值,
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)
}
}
}
}
关于ios - 如何在 Swift 中访问深层嵌套的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58387598/