У меня есть эта длинная функция здесь, которая создает кучу вызовов API, анализирует данные и возвращает два массива, представляющие кучу визитных мест (один массив содержит широты, один удерживает широты). Проблема, с которой я сталкиваюсь, определяет, когда будут заполнены два массива. В идеале я хотел бы иметь возможность разместитьSwift - Проблемы с вызовами API/CompletionHandler/URLSessions
print("ArrayCount = \(self.latArray.count)")
где-то в моем коде и получить один оператор печати в консоли для чтения ArrayCount = 123. Однако везде я помещаю заявление для печати, я получаю либо счетчик массива из 0 или цикл значений, которые печатаются по мере их добавления (1..2..3 .. ... ..123). Заранее спасибо!
func someFunction()
{
let url:URL = URL(string: "...")
let task = URLSession.shared.dataTask(with: URLRequest(url: url))
{
data, response, error in
if error != nil
{
print("ERROR IN API REQUEST: \(error!.localizedDescription)")
}
else
{
do
{
if let parsedData = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String: Any]
{
if let layerOne = parsedData["one"] as? [String: Any]
{
if let layerTwo = layerOne["two"] as? [[String: Any]]
{
for layerThree in layerTwo
{
if let variableName = layerThree["value"] as? String
{
let innerUrl:URL = URL(string: "...")!
let innerTask = URLSession.shared.dataTask(with: URLRequest(url: innerUrl))
{
data, response, error in
if error != nil
{
print("ERROR IN API REQUEST: \(error!.localizedDescription)")
}
else
{
do
{
if let parsedData = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String: Any]
{
if let layerA = parsedData["A"] as? [String: Any]
{
if let lat = layerA["Latitude"] as? String, let long = layerA["Longitude"] as? String
{
self.latArray.append(lat)
self.longArray.append(lon)
}
}
}
}
catch
{
print("ERROR IN JSON SERIALIZATION")
}
}
}
innerTask.resume()
}
}
}
}
}
}
catch
{
print("ERROR IN JSON SERIALIZATION")
}
}
}
task.resume()
}
Можете ли вы дать образец JSON, который вы получаете? То, как вы разбираете этот JSON, выглядит странно. – AdamPro13
Прошли ли вы и заменили все ваши переменные и индексы, чтобы использовать произвольные произвольные имена? Это довольно похоже на то, что вы пытаетесь проанализировать ответ API из API Google Адресов. Почему бы просто не опубликовать исходный код? Таким образом, другим людям легче помочь с вашей проблемой. –
Вы можете сделать несколько условных привязок для оператора 'if'. Вам не нужно все это сумасшедшее гнездование. – Alexander