gpt4 book ai didi

ios - 如何从存储在数组中的多个 URL 逐一加载 JSON 数据?

转载 作者:行者123 更新时间:2023-11-30 13:36:15 26 4
gpt4 key购买 nike

我有一个 url 数组(由用户选择),我想从中逐一加载 JSON 数据并填充 UITableView。以下是我使用过的代码,但它似乎不起作用。谁能给我一个解决方案吗?

     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()
}

它不起作用,所以肯定出了问题。如果有人能指出我的错误,我将不胜感激。谢谢!

编辑:按照建议,我编写了一个递归函数。它正在运行,但并未显示所有 JSON。我不明白出了什么问题。

    func loader(let i : Int, var array : [String])
{
if i < array.count
{
let url = NSURL(string: array[i])
let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in

dispatch_async(dispatch_get_main_queue(), { () -> Void in

if error == nil
{
do
{
let jsondata = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)
print(jsondata)
print("--------------------------")


}
catch
{

}
}

})


})
task.resume()
self.loader(i+1, array: array)
}
else
{
return
}
}

编辑2:感谢所有宝贵的意见,伙计们,我修好了!我将函数调用封装在dispatch_async() 中,现在工作正常。这是更新后的代码:

    fbFeedMessages.removeAll()

dispatch_async(dispatch_get_main_queue()) { () -> Void in

self.loader(fbPagesURLS)

}

最佳答案

尝试这样,将您的网址分配给 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()
}

关于ios - 如何从存储在数组中的多个 URL 逐一加载 JSON 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36042617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com