2017-06-02 12 views
0

Swift 3を使用してFacebookイベントをアレイに保存するにはどうすればよいですか?私はSwift Guyからかなりコピーされた次のコードを持っていますが、このコードではうまくいきません。次は私のviewDidLoad()関数です:Show Swiftのイベント3

let url = URL(string: "https://www.facebook.com/events/upcoming") 
     let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in 
      if error != nil { 
       print("ERROR") 
      } else { 
       if let content = data { 
        do { 
         let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject 
         print(myJson) 
        } catch { 
         print("error") 
        } 
       } 
      } 
     } 
     task.resume() 

Facebookのイベントページから情報を取得するにはどうすればよいですか?私はコーディングがうまくいきますが、スウィフトの場合は初心者ですので、各行が何をしているかについての説明が非常に役に立ちます。ありがとう!

答えて

1

リクエストしているURLが、JSONリソースのように解析しようとしているHTMLページを返します。 JSONとして情報を取得するには、Facebook Graph APIおよび/またはFacebook Swift SDKを使用する必要があります。

は、より多くの情報のためのFacebookの開発者向けドキュメントを読んで試してみてください。

https://developers.facebook.com/docs/swift

https://developers.facebook.com/docs/graph-api

また、スウィフトErrorオブジェクトを使用すると、何が悪かったのか理解するのを助けることができる情報が含まれています。それらをコンソールに印刷することができます。これを試してみてください:

if error != nil { 
    print(error) 
} else { 
// ... 

あなたが使用できるようにcatch文でも、そのブロック内で独自のerror変数を設定します。

} catch { 
    print(error) 
} 

あなたがFacebookアプリを作成する手順を理解していることを確認してください:登録SDKをダウンロードし、SDKをプロジェクトに追加し、SDKを設定し、Facebookにログインしてから、Facebook Graph APIを呼び出して情報を取得します。これらの手順はすべて上記のFacebookの文書に記載されています。私は、iOS SDK(のObjective-C)のセットアッププロジェクトへの指示で開始し、その後、次のようにアプリのデリゲートとビューコントローラを変更したい:

AppDelegate.swift:

import UIKit 
import FacebookCore 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool { 
     SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions) 
     return true 
    } 

    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
     return SDKApplicationDelegate.shared.application(app, open: url, options: options) 
    } 

} 

ViewController.swift:

import UIKit 
import FacebookCore 
import FacebookLogin 

class ViewController: UIViewController, LoginButtonDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     if let _ = AccessToken.current { 
      loadEvents() 
     } 
     let loginButton = LoginButton(readPermissions: [ .publicProfile, .userEvents ]) 
     loginButton.center = view.center 
     loginButton.delegate = self 

     view.addSubview(loginButton) 
    } 

    func loginButtonDidCompleteLogin(_ loginButton: LoginButton, result: LoginResult) { 
     if let _ = AccessToken.current { 
      loadEvents() 
     } 
    } 

    func loginButtonDidLogOut(_ loginButton: LoginButton) { 
     // Logout handling code here 
    } 

    func loadEvents() { 
     let connection = GraphRequestConnection() 
     connection.add(GraphRequest(graphPath: "/me/events")) { httpResponse, result in 
      switch result { 
      case .success(let response): 
       print("Graph Request Succeeded: \(response)") 
      case .failed(let error): 
       print("Graph Request Failed: \(error)") 
      } 
     } 
     connection.start() 
    } 

} 

responseオブジェクトには、すでに解析されたFacebookイベント情報が含まれます。

+0

はい、私は試しましたが、私はそれを本当に理解しませんでした。より多くの情報やサンプルコードを提供できますか? –