2017-06-02 3 views
0

Wie kann ich Facebook-Ereignisse in einem Array mit Swift 3 speichern? Ich habe den folgenden Code, den ich ziemlich viel von The Swift Guy kopiert habe, aber es funktioniert nicht für diesen Code. Folgendes ist in meiner viewDidLoad() Funktion:Facebook Ereignisse in Swift 3 anzeigen

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() 

Wie kann ich die Informationen aus der Facebook-Event Seite bekommen? Ich sollte erwähnen, dass ich gut Codieren kann, aber ich bin ein Anfänger, wenn es um Swift geht, also wäre eine Erklärung, was jede Zeile macht, sehr hilfreich. Vielen Dank!

Antwort

1

Die URL, die Sie anfordern, gibt eine HTML-Seite zurück, die Sie analysieren möchten, als wäre es eine JSON-Ressource. Sie müssen die Facebook Graph API und/oder das Facebook Swift SDK verwenden, um die Informationen als JSON zu erhalten.

Probieren Sie die Facebook-Entwickler-Dokumentation Weitere Informationen zu lesen:

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

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

Auch Swift Error Objekte enthalten Informationen, die Sie verstehen, was schief gelaufen ist helfen kann. Sie können sie auf der Konsole ausdrucken. Versuchen Sie folgendes:

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

Die catch-Anweisung auch eine eigene error Variable in seinem Block setzt, so können Sie verwenden:

} catch { 
    print(error) 
} 

Achten Sie darauf, die Schritte bei der Schaffung einer Facebook-App beteiligt verstehen: Registrierung der App mit Facebook, Herunterladen des SDK, Hinzufügen des SDK zu Ihrem Projekt, Konfigurieren des SDK für Ihre App, Anmelden bei Facebook in Ihrer App und dann Aufruf der Facebook Graph API, um die Informationen zu erhalten. Diese Schritte sind in der oben genannten Facebook-Dokumentation beschrieben. Ich würde mit dem iOS SDK (Objective-C) Anweisungen zur Einrichtung Ihres Projekts beginnen und dann AppDelegate ändern und View-Controller auf die folgenden:

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() 
    } 

} 

Das response Objekt wird die Facebook-Events Informationen enthalten, die bereits analysiert.

+0

Ja, ich habe versucht, aber ich habe es nicht wirklich verstanden. Können Sie bitte mehr Informationen oder Beispielcode bereitstellen? –