2016-05-29 6 views
0

TableViewで表示するために使用する配列にJSON結果を渡すときに問題があります。ObjectMapperを使用する - JSONの結果をTableViewスウィフトに変換する

ここに私のモデル:あなたは私のJSONの結果がOKであることが確認できた画像で

class Restaurant: Mappable { 

var lat: Float? 
var lng: Float? 
var address: String? 
var name: String? 

required init?(_ map: Map) { } 

// Mappable 
func mapping(map: Map) { 
    lat  <- map["venue.location.lat"] 
    lng  <- map["venue.location.lng"] 
    address <- map["venue.location.address"] 
    name <- map["venue.name"] 
} 
} 

とここに私のViewController

class ListViewController: UIViewController { 

@IBOutlet weak var tableView: UITableView! 

var listRestaurants: [Restaurant] = [] 

override func viewDidLoad() { 
super.viewDidLoad() 
retrieveFoursquareList() 
tableView.reloadData() 
} 

func retrieveFoursquareList(){ 
let foursquareService = FoursquareService() 

foursquareService.getFoursquare { 
    (let response) in 

    if let currrently = response { 
    dispatch_async(dispatch_get_main_queue()) { 
     print("RESULTADO 2 array: \(currrently)") 

     for restaurant in currrently { 
     if let name = restaurant.name { 
      restaurant.name = name 
      print("RESULTADO 3 row: \(restaurant.name)") 
      self.listRestaurants.append(restaurant) 
      print("RESULTADO 4 array: \(self.listRestaurants)") 

     } 

     } 
    } 
    } 
} 
} 
} 

extension ListViewController: UITableViewDataSource, UITableViewDelegate { 
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
return listRestaurants.count 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

let cell = tableView.dequeueReusableCellWithIdentifier("RestautantsCell", forIndexPath: indexPath) as! RestaurantCell 


let listRestaurant = listRestaurants[indexPath.row] 

cell.nameLabel.text = listRestaurant.name 
cell.addressLabel.text = listRestaurant.address 
return cell 
} 

} 

。私の問題は、デVaRのlistRestaurant配列にこの結果を渡す方法です:

JSON output is OK but I have problem passing this JSON into the var listRestaurant array

私はあなたの助けに感謝します。ありがとう。

答えて

0

それは、あなたが、あなたのviewDidLoadで

をテーブルビューのデリゲートを設定しているように見える次のコードを追加しません:

tableView.dataSource = self 
tableView.delegate = self 

にこのコードを:

for restaurant in currrently { 
    if let name = restaurant.name { 
     restaurant.name = name 

あなたにもありますレストラン名をレストラン名に設定すると、追加する前に名前が設定されていることを確認したい場合は、この行には何のメリットもありません。

if let _ = restaurant.name { 
    self.listRestaurants.append(restaurant) 
} 

使用しているマッピング、私は精通していないですので、私はこの1についてはわからないんだけど、ドキュメントhereあなたはこのようにオブジェクトを作成することを示唆している(これは何を使用している場合):

let restaurant = Mapper<Restaurant>().map(restaurantData) 

あなたの気持ちに合わせてキャストすることはできませんが、わかりません。

tableViewが表示されない主な理由は、デリゲート関数が設定されていないためです。

+0

デリゲートに感謝します。それを私が直した。しかし、私はまだデータを渡すことに問題があります。私はlet restaurant = Mapper ().map(restaurantData)を使って動作しません。 – Tindaya

関連する問題