Невозможно добавить объекты в массив внутри замыканияIOS

Программируем под IOS
Ответить
Anonymous
 Невозможно добавить объекты в массив внутри замыкания

Сообщение Anonymous »

Я новичок в Swift, и мне пришла в голову идея создать приложение, которое показывает результаты в реальном времени.
Поэтому я использую платформу Alamofire для выполнения HTTP-запросов с использованием замыкания.
Чтобы представить счет и результат каждого отдельного совпадения, я создал следующий класс под названием Score:

Код: Выделить всё

class Score {

var homeTeamName : String = ""
var visitorTeamName : String = ""
var matchScore : String = ""
var matchTime : String = ""}
< /code>
В LiveScoresViewController я объявил и инициализировал глобальную пустую коллекцию типа «Scores», в которой будут храниться текущие результаты
var scoresArray : [Score] = [Score]()
< /code>
Затем я создаю два метода:
[list]
[*]getLiveScore
: сделать http-запрос
[/list]

Код: Выделить всё

func getLiveScores(url : String) {
Alamofire.request(url, method: .get).responseJSON { response in

if response.result.isFailure {
let alert = UIAlertController(title: "Error Occured", message: "Please check your connection or restart the application", preferredStyle: UIAlertController.Style.alert)
let alertAction = UIAlertAction(title: "Ok", style: UIAlertAction.Style.cancel)

alert.addAction(alertAction)
}

else {
let liveScoresJSON : JSON = JSON(response.result.value!)
self.updateLiveScore(json: liveScoresJSON)
}
}
}
< /code>
[list]
[*]updateLiveScore
: для анализа результата JSON и его представления
[/list]

Код: Выделить всё

func updateLiveScore(json : JSON) {
let size = json["result"].count

for index in 0..
getLiveScoreМетод 
вызывается в функции viewDidLoad(), но массив ScoresArray остается пустым, даже если результат запроса не является пустым! Я попытался передать коллекцию в параметрах методов, но понял, что не могу изменить ее в Swift, и в отличие от Java, параметры являются константами.

Подробнее здесь: https://stackoverflow.com/questions/581 ... -a-closure
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»