问题标签 [completion-block]
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.
objective-c - 如何将 Objective-C 的完成块转换为 Swift?
我尝试将 Objective-C 块语法转换为 Swift Xcode 6.3.2
完成块类型定义:
在网上冲浪后,我尝试了
和
但它告诉我错误
预期的 ',' 分隔符
表达式列表中的预期表达式
ios - 在 Swift 中是否有一种简洁的方法可以将完成块附加到 NSURLSessionDataDelegate 回调?
好的,这是交易:
我在 Swift 应用程序中进行了 URL 调用,有点像这样:
实际上,完全一样,因为它是我正在使用的函数(静态类函数)。
有问题的行是这一行:
“urlExtraData”是我之前声明的字典:
并在此处分配:
完成块 typedef 在这里:
会话设置在这里:
委托响应处理程序在这里:
我认为使用字典来保存第二个回调是一个令人讨厌的、臭名昭著的黑客行为。但是,我没有找到将 refCon 附加到任务的方法。我宁愿将辅助完成块直接附加到任务,而不是使用单独的字典。
我很乐意被告知我的方法很糟糕,只要我得到更好的东西。
有接盘侠吗?
谢谢!
swift - 快速完成块
我想实现以下目标:
- 在 B 类中,添加 1 个对象后重新加载我的数据库。
reloadDatabase()
在完成块中调用。 - 在 classB 中,
reloadDatabase()
将调用getObjects()
以classA
获取最新的数据库对象列表并传递给objectList
classB
问题:我如何确保每当我调用getObjectList()
B 类时,我总是能得到最新的列表?据我了解,我objectList
可能不会在reloadDatabase() block
. 我可以在尚未到达完成块 getObjectList()
时调用(objectList 仍然是旧的 objectList)。reloadDatabase()
我对闭包和块很陌生。非常感谢任何指导!
ios - CKModifyRecordsOperation completion Swift 2.0
I have the code below but I am shown an error when building with Xcode 7 and Swift 2.0
The error is Cannot call value non-function type (([CKRecord]?, [CKRecordID]?, NSError?) -> Void)?
Thanks
swift - NSURLSession,完成块,Swift
我正在使用 NSURLSession。我有一个包含餐厅的数组,我正在请求数组中每个餐厅的菜肴到 api。dataTask 有效,我只是在所有 dataTask 完成后才尝试调用方法。
self.updateDataSourceAndREloadTableView 永远不会被调用,无论我的完成块如何。这是我的 findAllDishesOfRestaurants 函数
这是我执行数据任务的功能。
就像我之前说的,我需要等到有趣的 findAllDishesOfRestaurants 完成。我试着写我的完成块,但我不确定我做得对。任何帮助是极大的赞赏。感谢
ios - 在 MZFormSheetController 中使用 didDismissCompletionHandler
我正在使用MZFormSheetController在我的应用程序中呈现模式。有一种情况,我想在我关闭第一个表单控制器后立即展示第二个表单控制器。为了做到这一点,有一个完成块,但我不知道如何实际使用它。
代码如下所示:
在那个完成处理程序中,我应该怎么做才能得到工作表解雇的通知,以便我可以调用第二张工作表?
ios - 用于 for 循环内动画的 Objective-C 完成块(暂停循环处理)
我有一种方法可以淡入,然后淡出一个按钮标签(如下所示):
这按预期工作。但是,我想循环遍历数组的内容,而不是单个字符串(例如,淡入“A”,淡出“A”,淡入“B”,淡出“B”.. ...)。
在上面的代码中,完成块在开始淡出之前等待淡入完成(好)。但是,如果我尝试使用 for 循环处理数组(修改方法以接受数组并在迭代数组的 for 循环中嵌套操作),循环会立即循环,而不是等待第一个字符完成。
有没有办法在第二个动画动作中使用完成块来暂停循环处理 - 还是我以错误的方式处理这个?
swift - 向 CloudKit 函数添加完成块
我的 ViewController 想要显示一些基于 CloudKit 查询的数据。
我的 CloudKit 代码都在一个单独的类中。该类有一个名为 loadExpenses() 的函数,它从 CK 获取一些 Expenses 实体。
我希望能够从 VC 调用 loadExpenses(),因此我需要该函数提供的完成块来从 VC 更新 UI。
这就是 loadExpenses() 的样子:
显然最后一部分不会执行,考虑到所有这些 self.property 属于 VC(我保留它们只是为了展示我需要在 VC 中做什么)。
正如我所说,我希望能够从 VC 调用此函数并获取/使用完成块来更新这些属性。我怎么做?
swift - 完成块不返回任何内容
我希望它返回字符串“我的名字是 Jacky”,但它没有。但是如果我将其更改isSuccess
为:
然后它工作正常,这是为什么呢?提前致谢!
objective-c - 如何让一个方法在继续执行之前等待另一个(异步)方法完成?
我进行了很多搜索以了解其他人是如何解决这个问题的,但不幸的是,我没有找到这个特定问题的答案。我将衷心感谢您的帮助。
总结一下:我的类中有两个方法,method1 和method2。我必须在 method1 中调用一个异步函数。然后代码继续执行并到达method2。但是在方法 2 中,有些情况下我需要在方法 1 中使用该异步调用的结果,因此我需要确保方法 1 中的异步调用已经完成,然后再继续方法 2 的其余部分。
我知道一种方法是使用信号量,另一种方法是使用完成块。但我想以最通用的方式执行此操作,因为会有其他方法,类似于方法 2,它们将再次需要等待方法 1 中的异步调用完成才能继续执行。同样出于同样的原因,我不能简单地在 method2 本身内部调用 async 函数并将其余的 method2 放在其完成块中。
这是我想要做的一个粗略的想法。如果有人将完成块添加到这个伪代码中,我将不胜感激,这样我就可以清楚地看到事情是如何工作的。顺便说一句,method1 和 method2(以及此类中的所有其他方法)在同一个线程上(但不是主线程)。
更新:我知道我可以在异步调用完成后发出信号量,并且我可以在方法 2 中等待相同的信号量,但我想改用完成块,因为我认为这会更通用,特别是如果有其他类似的方法此类中的方法2。有人可以将完成块添加到此代码中,因为我在使其工作时遇到问题吗?