我正在调用一个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服务响应?
答案 0 :(得分:1)
我看到了你的案例....现在我有了一个方法
首先创建AppDelegate的全局对象:
let kAppDelegate = UIApplication .sharedApplication().delegate as! AppDelegate
将这行代码放在AppDelegate类中,或者创建任何其他类来管理常量。通过以这种方式创建,只要您的应用程序运行,AppDelegate对象就会一直存在。
现在可以随意调用您的函数,假设您想在所有类的viewWillAppear中调用:
override func viewWillAppear(animated: Bool) {
kAppDelegate.CallWebServiceForDISCIPLINELIST()
}
我相信这会对你有所帮助。