2

Alamofire を使用して Facebook の地名のデータを取り出そうとしていますが、運がありません。これは私が試したものであり、それを機能させる方法がわかりません。

xcode 7.3 swift2.2

したがって、グラフAPIの結果はこれです

{
   "data": [
      {
         "category": "Local business",
         "category_list": [
            {
               "id": "272705352802676",
               "name": "Outdoors"
            },
            {
               "id": "115725465228008",
               "name": "Region"
            }
         ],
         "location": {
            "street": "Athens",
            "city": "Palai\u00f3n F\u00e1liron",
            "state": "",
            "country": "Greece",
            "zip": "17562",
            "latitude": 37.9284637008,
            "longitude": 23.6944070162
         },
         "name": "THE NAME OF THE PLACE",
         "id": "THE ID"
      }

そして、「データ」の中に入り、最後の2行である場所の名前とIDだけを取りたいと思います。

そして、これが私のコードです!

override func viewDidLoad() {
    super.viewDidLoad()

 Alamofire.request(.GET, "https://graph.facebook.com/search", parameters: ["q": "", "type": "place", "center": "37.928319,23.7036673", "distance": "10000", "access_token": "ACCESS-TOKEN", "expires_in": "5184000"])
    .responseJSON { response in
        if let JSON = response.result.value {
            print("JSON: \(JSON["data"]!["name"]!)")
        }
}
}

そして、私はこのエラーが発生します

致命的なエラー: オプション値のラップ解除中に予期せず nil が見つかりました

理由はありますか?

4

1 に答える 1

0

OK、これは簡単だと思います。質問する価値はありませんでしたが、これが解決策です

 Alamofire.request(.GET, "https://graph.facebook.com/search", parameters: ["q": "", "type": "place", "center": "37.928319,23.7036673", "distance": "10000", "access_token": "475827182628380|6U-mk-1etGQHwrXRSMF4Ht2zOyc", "expires_in": "5184000"])
            .responseJSON { (responseData) -> Void in
                if((responseData.result.value) != nil) {
                    let swiftyJsonVar = JSON(responseData.result.value!)

                    if let resData = swiftyJsonVar["data"].arrayObject {
                        self.arrRes = resData as! [[String:AnyObject]]
                    }
                    if self.arrRes.count > 0 {
                        self.kati.reloadData()
                    }
                }
        }

そしてセルで

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("checkInCell", forIndexPath: indexPath)
    var dict = arrRes[indexPath.row]
    cell.textLabel?.text = dict["name"] as? String
    //cell.detailTextLabel?.text = dict["email"] as? String
    return cell
}

SwiftyJSON も忘れずに使用してください。

于 2016-04-22T19:38:43.287 に答える