在退出後,我有一個數據類的NSDictionary類型的變量更改類變量沒有效果斯威夫特
class Data {
var user : String;
var pass : String;
var result: NSDictionary;
init(user: String, pass: String) {
self.user = user;
self.pass = pass;
self.result = NSDictionary();
}
func networkResponseHandler(data: Foundation.Data?, response:URLResponse?, err:Error?) -> Void {
if err != nil { print(err); return; }
let jsonResult : NSDictionary = try! JSONSerialization.jsonObject(with: data! as Foundation.Data, options: .allowFragments) as! NSDictionary;
//print(jsonResult);
print(jsonResult["result"])
self.result = jsonResult.copy() as! NSDictionary;
}
func login() -> Bool {
let url = URL(string: "http://");
let task = URLSession.shared.dataTask(with: url!, completionHandler: networkResponseHandler);
task.resume();
return true;
}
}
這個類的實例是在AppDelegate中的文件,和IM accesing它是這樣的:
let appDelegate = UIApplication.shared.delegate as! AppDelegate
但是,在函數networkResponseHandler
當我使用斷點時,我看到結果具有適當的值,但在函數之外它是空的。
使用數據對象:ViewControler.swift
@IBAction func bSignInPressed(_ sender: AnyObject) {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.uData = Data(user: tEmail.text!, pass: tPassword.text!);
appDelegate.uData!.login();
print(appDelegate.uData!.result["result"]);
}
您沒有發佈使用Data對象的代碼,只是發佈了類本身以及對AppDelegate的引用。你在哪裏創建數據對象?你在哪裏使用networkResponseHandler? –
@MarcoPace我更新了問題 –
感謝您的更新,但仍缺少一些代碼:我可以看到按下按鈕後執行登錄,但我沒有看到你要求「結果」的地方。你可以在你試圖訪問的地方添加代碼嗎? –