如何将此Web服务方法声明为全局?

时间:2016-11-18 13:10:28

标签: ios swift categories nsmutabledictionary

我正在调用一个Web服务及其想要在项目中随处使用的数据。这是我的网络服务

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

        }

我为NSMutableDictionary制作了一个类别文件,用于获取它的键和值对,如下所示。仅供参考 - 我使用了两种密钥和配对方法,我有20-30种这样的方法

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

直到现在我尝试下面的案例

1)我使用extention返回值NSMutableDictionary,但在获得回复之前返回

2)我将此方法声明为appdelegate并在didfinishlaunching方法中调用它,但当我定向到另一个视图时,值为nil

3)我将它存储到NSUserDefaults并获取所有内容但是作为一个数组,但我的类别文件是NSMutableDictionary因此它会导致类型转换的致命错误。

如何在整个项目中获得此Web服务响应?

1 个答案:

答案 0 :(得分:1)

我看到了你的案例....现在我有了一个方法

首先创建AppDelegate的全局对象:

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

将这行代码放在AppDelegate类中,或者创建任何其他类来管理常量。通过以这种方式创建,只要您的应用程序运行,AppDelegate对象就会一直存在。

现在可以随意调用您的函数,假设您想在所有类的viewWillAppear中调用:

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

我相信这会对你有所帮助。