我想在viewDidLoad中访问stringEncoded,但我不能。我如何访问它。是因为它不在主队列中,还是与全局变量人员有关?
我尝试使用新代码,但它仍然没有工作......
// Editted。
答案 0 :(得分:0)
根据您提供的代码,var stringEncoded
已定义到您的jsonGetir
功能,而您想从viewDidLoad
因此,解决方案是将此变量放在类级别中,如下所示:
class YourClass{
var stringEncoded = "asomthing" //change the value or the type to whatever suites u
viewDidLoad{}
func jsonGetir(){}
}
正如您所要求的,一个完整的工作示例:
import UIKit
class StViewController: UIViewController {
var stringEncoded = [String]()
func jsonGetir() {
let urls = NSURL(string: "http://gigayt.com/mackolik/deneme.php")
let sessions = NSURLSession.sharedSession().dataTaskWithURL(urls!){
data, response, error -> Void in
if (error != nil){
print(error)
}
do {
if let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary {
let x = jsonResult["kodlar"] as! String
self.stringEncoded = x.componentsSeparatedByString(",")
}
}
catch {
print(error)
}
dispatch_async(dispatch_get_main_queue()){
}
}
sessions.resume()
}
override func viewDidLoad() {
super.viewDidLoad()
for i in 0..<self.stringEncoded.count {
print(self.stringEncoded[i])
}
}
}
答案 1 :(得分:0)
首先在类范围中声明变量。如果您想要保留该参数,则可以使用 inout 参数。请参阅了解有关 inout 参数的更多信息,希望您理解