2016-08-04 18 views
0

ich eine Facebook Graph Anfrage der folgenden haben:Zugriff auf eine Funktion in vielen Klassen

let request: FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id"], HTTPMethod: "GET") 
    request.startWithCompletionHandler({(connection: FBSDKGraphRequestConnection!, result: AnyObject!, error: NSError!) -> Void in }) 

Ich halte die Grafik Anfrage in jeder Klasse zu wiederholen meine Facebook-ID zugreifen. Ich habe versucht, es in NSUserDefaults zu speichern, die funktionierte, obwohl viele Bugs und zufällige Abstürze erstellt. Ich frage mich, was der beste Weg ist, diesen Completion Block in jeder Klasse wiederzuverwenden, ohne ihn immer wieder aufrufen zu müssen.

+0

Haben Sie schon von DRY? https://en.wikipedia.org/wiki/Don%27t_repeat_yourself – CarlosCarucce

Antwort

0

Wenn Sie viele Anrufe tätigen, sollten Sie nur eine Klasse erstellen, die Ihre Netzwerkanfragen behandelt und alle Ihre Anfragen über sie leitet. Dann ist alles zentralisiert und wenn sich die API ändert, wird Ihr Code viel wartbarer sein.

0

Swift-Funktionen sind natürlich global. Es sieht nicht so aus, als würde es sich auf etwas anderes als das Facebook SDK verlassen, also kannst du einfach eine neue Datei erstellen und sie dort einstecken.

//FBSDKGraphRequest.swift (Or any other name you want) 

import FBSDKCoreKit // Or whichever you need 

func graphRequest() { 
    let request: FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id"], HTTPMethod: "GET") 
    request.startWithCompletionHandler({(connection: FBSDKGraphRequestConnection!, result: AnyObject!, error: NSError!) -> Void in }) 
} 

Und Sie können in Ihrem Projekt, um es von überall rufen Sie einfach mit

graphRequest()