- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 iOS 中工作,当我获取 JSON 数据时,我在函数中没有错误地打印它并将它附加到一个字符串数组(我做对了)
但是如果我想稍后到达 String 数组,json 函数看起来是空数组。为了测试,我在按钮操作中打印了数组,然后它对我有用,但我想在 Json 函数结束时在其他函数的字符串数据中使用。
代码:
func getAllDataFromURL()
{
var i : Int = 0;
var urlDatas : [String] = allJsonDatas.getAllTours();
for(i = 0 ; i < allJsonDatas.getAllTours().count ; i += 1)
{
Alamofire.request(.GET, urlDatas[i]).responseJSON
{(response) -> Void in
if let arrivedData = response.result.value
{
print("********")
print(arrivedData["generalTourDistrict"] as! String);
print(arrivedData["otherTourDistrict"] as! String);
print(arrivedData["photoURLS"] as! [String]);
print(arrivedData["subTourDistrict"] as! String);
print(arrivedData["tourCalendar"] as! String);
print(arrivedData["tourDistrict"] as! String);
print(arrivedData["tourName"] as! String);
self.tryingSomething.appendContentsOf(arrivedData["photoURLS"] as! [String]);
print("********\n")
}
}
}
}
而viewDidLoad是
override func viewDidLoad() {
super.viewDidLoad()
Alamofire.Request.addAcceptableImageContentTypes(acceptableContentTypes);
self.getAllDataFromURL();
self.printTheJsonDatas();
}
例如,在 getAllDataFromURL() 函数中我可以正确打印它。
这是来自 json 的 url 数据的结果:
["https://acenta.dominant.com.tr//dominant/webout/R12/php/product/img.php?path=L2QvMS9jcmkvc295a3VsL3VydW4vMDAvMjIvMTIvaW1hZ2UvL3VfMDAyMjEyLjAwMDAxLmpwZWc=&rx=650&ry=400", "https://acenta.dominant.com.tr//dominant/webout/R12/php/product/img.php?path=L2QvMS9jcmkvc295a3VsL3VydW4vMDAvMjIvMTIvaW1hZ2UvL3VfMDAyMjEyLjAwMDA2LmpwZWc=&rx=650&ry=400"]
但是 printTheJsonDatas()
打印一个空数组,如 -> [ ]
func printTheJsonDatas()
{
print(tryingSomething)
//tryingSomething : [String]
}
令人惊讶的是,当我将 printTheJsonDatas()
放入 buttonClickedAction
时,它会像我之前所说的那样工作。
我认为问题出在线程上,但我说不清楚。
最佳答案
您正在连续调用您的网络服务请求和打印功能,就像它们都是同步的一样,但它们不是。当您使用 Alamofire
发出网络服务请求时,它会异步运行。所以你不能指望它在未来的某个时间完成。你应该做的是在 Alamofire
请求的 .response
block 中调用你的打印函数:
func getAllDataFromURL()
{
var i : Int = 0;
var urlDatas : [String] = allJsonDatas.getAllTours();
for(i = 0 ; i < allJsonDatas.getAllTours().count ; i += 1)
{
Alamofire.request(.GET, urlDatas[i]).responseJSON
{(response) -> Void in
if let arrivedData = response.result.value
{
self.tryingSomething.appendContentsOf(arrivedData["photoURLS"] as! [String]);
self.printTheJsonDatas();
}
}
}
}
您的代码的另一个问题是它正在进行多个网络服务调用。即使您在 .response
block 中调用打印函数,它也可能不会像您想象的那样工作。它将以不同的尺寸打印多次。
关于ios - Json Values Append Array 但 ViewDidLoad 看起来是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39042947/
我正在尝试执行 vagrant up 但一直遇到此错误: ==> default: IOError: [Errno 13] Permission denied: '/usr/local/lib/pyt
我在容器 div 中有一系列动态创建的不同高度的 div。 Varying text... Varying text... Varying text... Varying text.
通过 cygwin 运行 vagrant up 时遇到以下错误。 stderr: /bin/bash: /home/vagrant/.ansible/tmp/ansible-tmp-14872260
今天要向小伙伴们介绍的是一个能够快速地把数据制作成可视化、交互页面的 Python 框架:Streamlit,分分钟让你的数据动起来! 犹记得我在做机器学习和数据分析方面的毕设时,
我是 vagrant 的新手,正在尝试将第二个磁盘添加到我正在用 vagrant 制作的虚拟机中。 我想出了如何在第一次启动虚拟机时连接磁盘,但是当我关闭机器时 然后再次备份(使用 'vagrant
我是一名优秀的程序员,十分优秀!