问题标签 [completionhandler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
305 浏览

swift - JSON 不可转换为 void(Openweather 地图 API)

我正在使用 Swift 调用 Openweather 地图 API,并且我需要从响应中返回一个特定的值作为字符串。

但是,当我尝试返回值错误时,因为 JSON 不能转换为字符串。

我明白了,因为我们使用了返回类型为 void 的闭包,所以我们应该使用完成处理程序。但我不知道我们怎样才能做到这一点。

如果我们将完成处理程序作为参数传递,我们如何调用该函数?

0 投票
3 回答
1397 浏览

swift - Swift:阻塞 mainThread 直到函数完成加载数据 / NSURLSession 与 completionHandler

我想创建一个从 url 加载数据然后将 responseData 作为 NSData 返回的函数。我想阻塞 mainThread 直到数据完成。这是我到目前为止所拥有的:

功能:

称呼:

我在第 21 行的 func 中遇到错误:

编译器:“无法使用类型为“(NSMutableURLRequest,completionHandler:completionBlock)的参数列表调用'dataTaskWithRequest'”

0 投票
0 回答
226 浏览

swift - 在会话结束之前运行 NSURLSession 之后的代码 - Swift

我有一个应用程序可以访问网站并从该网站下载 HTML,将其转换为字符串,从字符串中获取一些信息,然后将其用于应用程序。我的问题是提取字符串的代码在实际加载数据之前运行。我尝试将该代码放入完成处理程序中,但要么没有解决问题,要么我做错了。这是我的代码:

urlContent 常量在加载网站数据之前被赋值。我需要一种方法来阻止这种情况的发生。我对编程相当陌生,所以请记住您的回答,提前谢谢您。

0 投票
1 回答
342 浏览

swift - 解析查询后 Swift 数组为空 - 完成处理程序?

我不明白为什么在使用块查询后数组变为空。我做了一些研究,这很可能是因为我需要一个完成处理程序,但我不知道在这种情况下如何实现它。我可以在方法完成之前添加一个活动指示器吗?

0 投票
4 回答
2492 浏览

ios - Swift:如何调用其中一个参数是完成处理程序的函数

我对 XCode 和 Swift 很陌生,在我的 iOS 应用程序中,我编写了一种方法来执行对服务器上 php 文件的 POST 请求,方法是在 stackoverflow 中遵循一些答案

在哪里

问题是我不知道如何在我的视图控制器类上调用该函数。我见过的例子在函数中没有参数,所以当它被调用时,他们只是写了闭包。这是我到目前为止所尝试的:

但是 XCode 显示了很多错误,它建议我添加 ';' 在两三个地方......请你解释一下如何调用这种函数以及如何编写闭包?

0 投票
1 回答
317 浏览

ios - 如果在 PushViewController 之后完成,后端完成处理程序会使应用程序崩溃

我有的

我不明白问题的本质。

我有 2 个视图控制器:

1) FeedViewController,在tableview中显示事件

2) EventViewController,当您按下事件时推送。

当 Feed 加载时,它开始异步加载所有事件的所有图像。通过以下函数为每个事件完成:

这是我推送EventViewController的方式:

问题

问题是,如果我在下载图像之前按下事件并推送EventViewController(仍然调用完成处理程序),它会使应用程序崩溃。

假设

我为此苦苦挣扎了好几天,找不到解决方案,但我的假设是完成处理程序调用后

在 EventViewController 被推送后尝试执行以下行时会发生崩溃:

我假设当新的视图控制器被推送时,完成处理程序中使用的事件对象正在被释放

0 投票
1 回答
450 浏览

swift - 如何从 Haneke 的异步 fetch 方法返回值

我正在尝试解析使用Haneke Swift缓存的一些数据。我已经缓存了数据并编写了解析器来完成这项工作。这个解析器在一个单独的类中,称为AssembleCalendar().

使用 Haneke 的示例代码进行获取,我已经尝试完全和完全失败从闭包中实际返回一个值。

我的尝试

我知道的

我知道这是一个异步问题。我的代码没有等待我的AssembleCalendar()解析器完成。它只是运行每一行并在我的 scheduleItem 收到值之前返回 nil 。我试过了了很多很多解决方案并在线阅读了很多示例,但我无法弄清楚在这种情况下如何从这个闭包中检索一个值。

我的问题

如何在我的函数达到 nil 之前让 .fetch() 返回一个值?


更新:

这是我在上下文中的代码:

0 投票
0 回答
50 浏览

ios - 完成处理程序中的“EXE_BAD_ACCESS”

我收到“EXE_BAD_ACCESS”但我不知道我在哪里做错了请查看代码并让我知道错误。

箭头显示我得到的地方是错误的;

0 投票
2 回答
1379 浏览

swift - recursive function with async request

I have a recursive function with an async request. I want to save in an array if the requests were successful, but i don't know how. Concrete it is a function to upload files and if the function get a folder than the files inside this folder should also be uploaded.

I thought about implement this with a completionHandler, something about this:

But the problem is that println get call not only one time but as many as uploadFileRec get called inside. So if i would call an another function instead of println, the function would be also called many times. So i think the idea with completionHandler was wrong. How else can i realize this?

0 投票
1 回答
759 浏览

swift2 - 完成处理程序给出:更新到 swift 2 后,表达式类型不明确,没有更多上下文

我正在使用 SODA Client for swift(由 Socrata 创建),我刚刚更新到 XCode 7 和 swift 2 并发现了一些麻烦。我无法解决的一个是完成处理程序发现错误时的情况,它不接受应该得到错误并返回主线程的“syncCompletion(.Error(reqError))”行。

我在这里看到了许多具有相同描述的错误“表达式的类型在没有更多上下文的情况下不明确”,但在完成处理程序中没有,我看到一个使用 do - catch 的错误是不同的。我对 swift 的了解还不够,无法找到改变这种情况的方法。

一些答案假设您应该重写代码,因为某些类型在 swift 2 中可能会发生变化,但我不知道从哪里开始重写。

在此先感谢您的帮助。