How can the function findMediaLimit return the highest i, received from cURL ?
class func findMediaLimit(IgBusinessAccount: String, token: String) {
let igBId = IgBusinessAccount
for i in 1...12 {
guard let encodedUrl = self.buildURLAPIGraph(IgBusinessAccount: igBId, token: token, i: i) else { return }
//Async function that returns different i's in random order
self.cURL(urlT: encodedUrl) { (result) in
print(i)
//return the highest i
}
}
}
I have created this function in order to filter media that have been posted after conversion to a business Instagram account.
that's my cURL function
class func cURL (urlT: String,Completion block: @escaping ((OfficialProfile) -> ())) {
//visuJson (urlT: urlT)
GetJson.loadJson(fromURLString: urlT) { (result) in
switch result {
case .success(let data):
//Parse
do {
let decodedData = try JSONDecoder().decode(OfficialProfile.self, from: data)
if decodedData.username != nil {
block(decodedData)
}
} catch {
print("decode error: ",error)
}
case .failure(let error):
print("loadJson error:", error)
}
}
}
and that is my loadJson func
class func loadJson(fromURLString urlString: String,
completion: @escaping (Result<Data, Error>) -> Void) {
if let url = URL(string: urlString) {
let urlSession = URLSession(configuration: .default).dataTask(with: url) { (data, response, error) in
if let error = error {
completion(.failure(error))
}
if let data = data {
completion(.success(data))
}
}
urlSession.resume()
}
}
returna value from an asynchronous task. You needDispatchGroupto get notified when all network requests are completed and filter the data in thenotifymethod.