[英]How to get access to deeply nested objects in Swift
我有來自 FB Graph Request 的 API 響應,並且無法訪問“數據”層之外的名稱、描述、start_time、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)
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.