2017-02-06 8 views
0

Я получаю только один объект из запроса Get. Как получить все из них? Вот моя Модель данных.Я получаю только один объект из запроса Get. Как получить все это?

class DataClass { 

// MARK VARIABLES 
init(price: Double, title: String, firstImage: String, allImages: [String]) { 

    _price = Price 
    _title = title 
    _allImages = allImages 
    _firstImg = firstImage 
} 


var _title: String! 
var _firstImg: String! 
var _allImages: [String]! 
var _propertyPrice: Double! 

func downloadHandMProperties(completed: @escaping downloadComplete) { 
    Alamofire.request(propertyListing).responseJSON { response in 
     if let result = response.result.value { 
     let dict = JSON(result) 
      if let data = dict["data"].dictionary { 

       if let listingResultDict = data["listings"]?.array { 

        for list in listingResultDict { 

         if let propertyName = list["data"]["name"].string { 
          self._title = propertyName 

      /etc.. 
      // I parsed all of the data and passed them to the variables. 

     completed() 

    } 
} 

Здесь находится ViewController, откуда я его получаю.

Class ViewController: UIViewController { 
    let array = [DataClass]() 
var property = DataClass(price: 0, title: "", firstImage: "", allImages: []) 

override func viewDidLoad() { 
    super.viewDidLoad() 

let data = DataClass(price: property.price, title: property.title, firstImage: property.firstImage, allImages: property.allImages) 
    self.array.append(data) 
    print(array) 
} 
} 

В этом массиве есть только один объект. Как я могу получить все из них. Я думал о том, чтобы перебирать результаты, но я могу только прокручивать массивы и словари, а объект не является ни тем, ни другим. Любые предложения относительно того, как получить все объекты и поместить их в массив?

+0

Является ли ваша проблема тем, что вы возвращаете один большой объект JSON, который содержит все ваши 'свойстваListings', или вы только получаете один элемент' propertyListing', и вам интересно, где находятся другие? – alexisSchreier

+0

Я возвращаюсь только к одному свойству. Мне интересно, где все остальные. –

+0

, то вы уверены, что попадаете в правильную конечную точку, когда вы вызываете 'Alamofire.request (propertyListing) .responseJSON'? Возможно, вы перейдете на один узел слишком глубоко и настроите только один 'propertyListing' вместо того, чтобы получить его родительский узел, который логически будет содержать все списки. – alexisSchreier

ответ

0

Попробуйте нарисовать объект result как тип коллекции, который вы можете пропустить. Вы должны понять, что вы можете отдать свой result объект, как с некоторыми проб и ошибок, но это может выглядеть примерно так:

Alamofire.request(propertyListing).responseJSON { response in 
    if let result = response.result.value as? [[String: Any]] { 
     //here the result object is casted as an array of [String: Any] dictionaries 

     // I parsed all of the data and passed them to the variables. 
    } 
    completed() 

} 

Тогда можно перебрать массив словарей, поскольку каждый словаря будет представлять один ваших объектов.

Что вы можете сделать, чтобы проверить, какой тип вы можете отдать свой result объект как добавить точку останова на if let result = response.result.value { строке кода, а затем запустить po response.result.value as? [[String: Any]] в консоли Xcode. Если у вас получится хороший результат, вы настроены!

+0

Я только что немного редактировал свой пост. Я включил преобразование SwiftyJson в [String: Any]. Это позаботится обо мне. Я просто не включил, потому что я не думал, что это имеет значение. Я не думаю, что это проблема. –