【问题标题】:How to declare this web-service method as global?如何将此 Web 服务方法声明为全局?
【发布时间】:2016-11-18 13:10:28
【问题描述】:

我正在调用一项 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 服务响应?

【问题讨论】:

  • 您是否只使用此网络服务处理数据或其他视图动画?
  • 我使用这些数据以不同的形式显示到项目中的操作表中
  • 正如我提到的答案,对你没有帮助?
  • 我刚开始尝试

标签: ios swift categories nsmutabledictionary


【解决方案1】:

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

首先创建一个AppDelegate的全局对象:

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

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

现在在任何你想要的地方调用你的函数,假设你想在所有类的 viewWillAppear 中调用:

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

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

【讨论】:

    猜你喜欢
    • 2014-04-13
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    相关资源
    最近更新 更多