从另一个类访问变量时出现问题。来自另一个类的变量
我初始化和修改此变量
TheResponse类
import Foundation
import Alamofire
class TheResponse {
typealias JSONStd = [[String : AnyObject]]
var jsonAnswer = [[String:String]]()
var getRes: [[String : String]] {
return jsonAnswer
}
func callAmo(){
let urladdress = "https://api.github.com/users"
Alamofire.request(urladdress).responseJSON(completionHandler: {
response in
//print(response)
self.parseData(JSONData: response.data!)
})
}
func parseData(JSONData : Data){
do {
var readableJSON = try JSONSerialization.jsonObject(with: JSONData, options: .mutableContainers) as! JSONStd
let counter = readableJSON.count
//Filling the dictionary
for item in 0...counter - 1 {
let login = readableJSON[item]["login"]
let avatar_url = readableJSON[item]["avatar_url"]
let html_url = readableJSON[item]["html_url"]
let id = String(describing: readableJSON[item]["id"])
var dict:[String:AnyObject] = ["login": login!,
"avatar": avatar_url!,
"profile": html_url!,
"id": id as AnyObject]
jsonAnswer.append(dict as! [String : String])
}
}
catch{
print(error)
}
}
}
如果我将打印在这里的某个地方jsonAnswer变量,一切都看起来不错。 但我想在我的第二类中使用这个变量
import UIKit
import Alamofire
class TableViewController: UITableViewController {
var resObj = TheResponse()
var jsonData = [[String:String]]()
override func viewDidLoad() {
super.viewDidLoad()
resObj.callAmo{ (jsonAns) ->() in
self.jsonData = jsonAns
// print(self.jsonData)
}
print(self.jsonData)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MyCell", for: indexPath) as! MainViewCell
return cell
}
}
的问题是,当我要打印变量TableViewController
类,变量为空。作为打印出来,我只得到[]。
我应该如何访问该变量才能拥有它?
您的代码似乎做你写的是什么?你调用'resObj.getRes'返回'jsonAnswer = [[String:String]]()'这是空的,没有错? – Tj3n
在pareJson方法中,我正在填充jsonAnswer和 'jsonAnswer.append(dict as![String:String])' – Micgal
是的,但您从未调用该函数,并且您放置的是相当错误的,必须创建完成块在'callAmo()'上,不要使用数组作为存储的属性 – Tj3n