Ответ 1
Несколько проблем:
-
Вы предположили, что пытались добавить город со следующей строкой кода:
citiesArray.addObject(City())
Конструкция
City()
создаст новый пустой объектCity
. Таким образом, строка кода в лучшем случае добавит пустой объектCity
к вашему массиву, что не так, как вы планировали.Когда вы добавляете
City
к вашемуcitiesArray
, вы должны просто:citiesArray.addObject(city)
-
Вы говорите, что вы определили свой
citiesArray
следующим образом:var citiesArray: NSMutableArray!
Вам также необходимо создать экземпляр объекта для этой переменной (т.е. создать объект, к которому теперь относится эта переменная), например:
citiesArray = NSMutableArray()
-
Однако вы сообщаете, что в конце этого цикла это
citiesArray
равноnil
. В самом деле?!? Но если вы попытались вызвать методaddObject
иcitiesArray
былnil
, вы могли бы получить фатальную ошибку: "неожиданно найдено нуль при развертывании необязательного значения".Итак, если
citiesArray
былnil
, тоjsonArray
также должен был быть пустым. Или по какой-то причине вы даже не дошли до этого цикла. Я бы предложил (а) протоколироватьjsonArray
; и (б) запишите лог или положите точку останова внутри этого цикла и подтвердите, что вы даже попадаете сюда, как вы думаете.Кроме того, проверьте сроки этого (то есть убедитесь, что ведение журнала транзакций
citiesArray
действительно происходит после того, как эта подпрограмма заполняет его). Я знаю, что это звучит безумно, но если вы извлекаете данные из какого-то сетевого ресурса асинхронно, у вас могут возникнуть некоторые проблемы, связанные с синхронизацией. -
Поскольку вы пишете код Swift, вы можете использовать массивы Swift. Например, определите переменную массива как
var citiesArray: [City]!
И создайте его с помощью:
citiesArray = [City]()
И добавьте к нему объекты с помощью:
citiesArray.append(city)