在 Swift 中的文本视图中显示 REST API 结果不起作用
display the REST API result in textview in Swift doesn't work
我正在尝试开发一个函数来连接和读取 REST API,然后在文本视图中显示返回的 json,代码如下:
func restapiRead()
{
var request = URLRequest(url: URL(string: "https://reqres.in/api/users?page=1")!)
request.httpMethod = "GET"
let session = URLSession.shared
let task = session.dataTask(with: request, completionHandler: { data, response, error -> Void in
print(response!)
do {
let json = try JSONSerialization.jsonObject(with: data!) as! Dictionary<String, AnyObject>
print(json)
self.mytv.text = "\(json as! [[String: AnyObject]])" //> code line 1
self.mytv.text = "\(json as! NSArray)" //> code line 2
}
catch {
print("error")
}
})
task.resume()
}
实际上上面的所有代码都没有任何错误,但后来我使用 codeline1 或 codeline2 将结果复制到 textview 中,它会发出“警告”消息警告:
从“[String : AnyObject]”转换为无关类型“[[String : AnyObject]]”总是失败
如果我 运行 忽略警告并 运行,我会在代码行 1(以及代码行 2)处收到以下错误:
线程 6:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)
如何在文本视图中将结果复制为原始 json?
谢谢
您应该json 转换为字符串以供 textView 使用。
json.description
测试 100% 正常
代码更改为:
func restapiRead()
{
var request = URLRequest(url: URL(string: "https://reqres.in/api/users?page=1")!)
request.httpMethod = "GET"
let session = URLSession.shared
let task = session.dataTask(with: request, completionHandler: { data, response, error -> Void in
print(response!)
do {
let json = try JSONSerialization.jsonObject(with: data!) as! Dictionary<String, AnyObject>
DispatchQueue.main.async {
self.mytv.text = json.description
}
}
catch {
print("error")
}
})
task.resume()
}
我正在尝试开发一个函数来连接和读取 REST API,然后在文本视图中显示返回的 json,代码如下:
func restapiRead()
{
var request = URLRequest(url: URL(string: "https://reqres.in/api/users?page=1")!)
request.httpMethod = "GET"
let session = URLSession.shared
let task = session.dataTask(with: request, completionHandler: { data, response, error -> Void in
print(response!)
do {
let json = try JSONSerialization.jsonObject(with: data!) as! Dictionary<String, AnyObject>
print(json)
self.mytv.text = "\(json as! [[String: AnyObject]])" //> code line 1
self.mytv.text = "\(json as! NSArray)" //> code line 2
}
catch {
print("error")
}
})
task.resume()
}
实际上上面的所有代码都没有任何错误,但后来我使用 codeline1 或 codeline2 将结果复制到 textview 中,它会发出“警告”消息警告:
从“[String : AnyObject]”转换为无关类型“[[String : AnyObject]]”总是失败
如果我 运行 忽略警告并 运行,我会在代码行 1(以及代码行 2)处收到以下错误:
线程 6:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)
如何在文本视图中将结果复制为原始 json?
谢谢
您应该json 转换为字符串以供 textView 使用。
json.description
测试 100% 正常
代码更改为:
func restapiRead()
{
var request = URLRequest(url: URL(string: "https://reqres.in/api/users?page=1")!)
request.httpMethod = "GET"
let session = URLSession.shared
let task = session.dataTask(with: request, completionHandler: { data, response, error -> Void in
print(response!)
do {
let json = try JSONSerialization.jsonObject(with: data!) as! Dictionary<String, AnyObject>
DispatchQueue.main.async {
self.mytv.text = json.description
}
}
catch {
print("error")
}
})
task.resume()
}