Ios 如何从存储在一个数组中的多个URL逐个加载JSON数据?
我有一个URL数组(由用户选择),我想从中逐个加载JSON数据并填充UITableView。下面是我使用过的代码,但它似乎不起作用。谁能给我一个解决方案Ios 如何从存储在一个数组中的多个URL逐个加载JSON数据?,ios,json,swift,Ios,Json,Swift,我有一个URL数组(由用户选择),我想从中逐个加载JSON数据并填充UITableView。下面是我使用过的代码,但它似乎不起作用。谁能给我一个解决方案 while (i < fbPagesURLS.count) { let newUrl = NSURL(string: fbPagesURLS[i])! let task = NSURLSession.sharedSession().dataTaskWithURL(newUrl, comp
while (i < fbPagesURLS.count)
{
let newUrl = NSURL(string: fbPagesURLS[i])!
let task = NSURLSession.sharedSession().dataTaskWithURL(newUrl, completionHandler: { (data, response, error) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
if error == nil
{
print(data)
print("----------------------------")
i++;
}
})
})
task.resume()
}
尝试这样做,将URL分配给fbPagesURLS并调用loadData方法
var currentItem = 0
func loadData()
{
if fbPagesURLS.count > currentItem
{
currentItem++
}else{
return
}
let task = NSURLSession.sharedSession().dataTaskWithURL(fbPagesURLS[currentItem], completionHandler: { (data, response, error) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
if error == nil
{
print(data)
print("----------------------------")
self.loadData()
}
})
})
task.resume()
}
i++
不在正确的位置。应该在task.resume()
之后。如果您需要的是一个接一个?
并且它的逻辑使用异步进程,最好的办法是使用递归函数。我更改了“I++”的位置,它现在确实打印数据,尽管它是empty@jose92405好的,我将尝试一个递归函数,并在这里给出一个更新!我也试过了,但效果相似。谢谢你的回复!它应该能工作,你检查过网址了吗,你能告诉我发生了什么吗?是的,网址是正确的,我通过把它们打印到日志中来检查。我真的不知道怎么了。这可能是dispatch\u async的问题吗?
fbFeedMessages.removeAll()
dispatch_async(dispatch_get_main_queue()) { () -> Void in
self.loader(fbPagesURLS)
}
var currentItem = 0
func loadData()
{
if fbPagesURLS.count > currentItem
{
currentItem++
}else{
return
}
let task = NSURLSession.sharedSession().dataTaskWithURL(fbPagesURLS[currentItem], completionHandler: { (data, response, error) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
if error == nil
{
print(data)
print("----------------------------")
self.loadData()
}
})
})
task.resume()
}