【问题标题】:Swift 4 access textView while in completion handlerSwift 4 在完成处理程序中访问 textView
【发布时间】:2018-10-26 01:05:46
【问题描述】:

Swift 4. 在完成处理程序中附加 UITextView 时遇到问题。错误和崩溃是它只能从主线程访问。提前致谢。

    let jsonUrlString = "http://192.168.1.5:8080/users"
    guard let url = URL(string: jsonUrlString) else {return}

    URLSession.shared.dataTask(with: url) { (data, response, err) in

        guard let data = data else { return}

        let dataAsString = String(data: data, encoding: .utf8) ?? "No data received"
        print(dataAsString)

        do {
           self.userList = try

                JSONDecoder().decode([User].self, from: data)

            for usr in self.userList {
                    print(usr.username)
                self.textView!.text.append(usr.username)
                }
        } catch let jsonErr {
            print("error serializing json: ", jsonErr)
        }

    }.resume()
}

【问题讨论】:

    标签: swift swift4.2


    【解决方案1】:

    你可以试试

    DispatchQueue.main.async { 
      self.textView!.text.append(usr.username) 
    }
    

    或者

    self.userList = try   JSONDecoder().decode([User].self, from: data)
    DispatchQueue.main.async {
       self.textView!.text = self.userList.map{$0.username}.joined(separator:"")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      相关资源
      最近更新 更多