2016-11-18 4 views
1

Ich rufe einen Webservice und seine Daten an, die ich überall in Projekt verwenden möchte. Das ist mein Web-ServiceWie wird diese Web-Service-Methode als global deklariert?

// MARK: Webservice for Vehicle list 
     func CallWebServiceForDISCIPLINELIST() -> Void { 

      let successed = {(responseObject: AnyObject) -> Void in 
       print(responseObject) 
       let code = responseObject["status_code"] as? Int 
       if code == 200{ 
        self.dict_discipline = responseObject as! NSMutableDictionary 
        NSUserDefaults.standardUserDefaults().setObject(self.dict_discipline, forKey: "Discipline_list") 
        //HUD.flash(.Success, delay: 2.0) 
       }else{ 
        UtilityHandler.showAlertWithStatusCode(code!) 
        // HUD.flash(.Error, delay: 2.0) 
       } 
      } 
      let failure = {(error: AnyObject) -> Void in 
       print(error) 
       // HUD.flash(.Error, delay: 2.0) 
      } 
      ServiceHandler.callWebserviceToUploadImageWithParams(nil, imgParams: nil, videoParms: nil, action: DISCIPLINE_LIST, success: successed, failure: failure) 

     } 

Und ich mache eine Kategorie Datei von NSMutableDictionary für seine Schlüssel-Wert-Paar bekommen und es ist wie unten. FYI Ich habe zwei Methoden der Schlüssel und das Paar bekam ich 20-30 Methoden wie diese

import UIKit 

class CategoryDiscipline: NSMutableDictionary { 

    func getDisciplineList(arr : NSMutableDictionary) -> NSArray { 
     let arr : NSArray = arr.valueForKey("discipline_list") as! NSArray 
     // print(arr) 
     return arr 
    } 

    func getdiscipline_id(arr : NSMutableDictionary, index : NSInteger) -> NSString { 
     let arr : NSArray = self.getDisciplineList(arr).valueForKey("discipline_id") as! NSArray 
     let str = arr.objectAtIndex(index) 
     //print(str) 
     return str as! NSString 
    } 
    func getdiscipline_name(arr : NSMutableDictionary, index : NSInteger) -> NSString { 
     let arr : NSArray = self.getDisciplineList(arr).valueForKey("discipline_name") as! NSArray 
     let str = arr.objectAtIndex(index) 
     //print(str) 
     return str as! NSString 
    } 
} 

Bis jetzt versuche ich Below Fälle

1) Ich extention davon mit Rückgabewert von NSMutableDictionary machen, aber es kehrt aber vor der Reaktion immer

2) ich diese Methode in appdelegate deklarieren und in didfinishlaunching Methode aufrufen, wenn I in eine andere Ansicht gerichtet, Wert nil

3) Ich speichere es in NSUserDefaults und bekomme alles, aber als ein Array, aber meine Kategorie-Datei ist NSMutableDictionary So wird es fatalen Fehler des Typs Gießen.

Wie kann ich diese Web-Service-Antwort in meinem gesamten Projekt erhalten?

+0

Arbeiten Sie mit diesem Webservice nur mit Daten oder anderen View-Animationen? –

+0

Ich verwende diese Daten, um in Action Sheet in verschiedenen Formen in Projekt –

+0

anzuzeigen Wie ich die Antwort erwähnt, ist nicht hilfreich für Sie? –

Antwort

1

Ich sehe Ihre Fälle .... Jetzt habe ich einen Ansatz

zunächst ein globales Objekt von AppDelegate erstellen:

let kAppDelegate = UIApplication .sharedApplication().delegate as! AppDelegate 

diese Codezeile in AppDelegate Klasse setzen oder eine andere Klasse erstellen für Konstanten verwalten. Wenn Sie auf diese Weise ein AppDelegate-Objekt erstellen, bleibt es bestehen, solange Ihre App läuft.

Rufen Sie nun Ihre Funktion, wohin Sie wollen, Angenommen, Sie in viewWillAppear aller Klassen nennen wollen, dann:

override func viewWillAppear(animated: Bool) { 
     kAppDelegate.CallWebServiceForDISCIPLINELIST() 
    } 

Ich bin sicher, dass es Ihnen helfen wird.

Verwandte Themen