從另一個類訪問變量時出現問題。來自另一個類的變量
我初始化和修改此變量
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