Tag: closures

如何在swift中使用block / closure

在我的应用程序之一,我已经使用块进行web服务调用并获得响应。 现在我想用swift编写这个应用程序,但是我在Swift中使用blocks / Closure时遇到了麻烦。 这是我想快速迁移的目标C代码: – //调用Communicator的类方法 [[Communicator sharedInstance]callWebService:WS_LOGIN withMethod:POST_METHOD andParams:params showLoader:YES completionBlockSuccess:^(id obj) { //Do play with data }completionBlockFailiure:^(id obj) { //Show alert with error }]; //在传播者类 -(void)callWebService:(NSString *)serviceName withMethod:(NSString *)methodName andParams:(NSDictionary *)params showLoader:(BOOL)showLoader completionBlockSuccess:(void (^)(id))aBlock completionBlockFailiure:(void (^)(id))aFailBlock { if (showLoader) { // show loader } [self performRequestWithServiceName:serviceName method:methodName andParams:params successblock:aBlock failureblock:aFailBlock]; } – […]

如何使用indexOfObjectsPassingTest:在Swift中

indexOfObjectsPassingTest的声明:在Swift中看起来像这样, func indexesOfObjectsPassingTest(predicate: ((AnyObject!, Int, CMutablePointer<ObjCBool>) -> Bool)!) -> NSIndexSet! 我已经尝试了各种排列组合,但是我很难,特别是如何处理这件作品, CMutablePointer<ObjCBool>) -> Bool)! 。 我发现它足够让人困惑,当我第一次学习Objective-C中的块时,如何从声明转换到实际使用的方法,而Swift的语法至less是令人困惑的。

将Swift Closures作为值添加到Swift字典中

我想创build一个Swift字典,其中包含stringtypes作为其键和闭包作为其值。 以下是我有的代码,但它给了我错误: '@lvalue与'(String,() – > Void)不相同“ class CommandResolver { private var commandDict:[String : () -> Void]! init() { self.setUpCommandDict(); } func setUpCommandDict() { self.commandDict["OpenAssessment_1"] = { println("I am inside closure"); } } } 我试着在StackOverflow上查看关于字典中的闭包的其他问题,但它并没有给我任何满意的答案。 所以我非常感谢这里的帮助。

为什么苹果的封闭声明缺less参数标签

当我通过UIKit阅读,大部分时间我看到闭包(作为一个函数参数)与缺less的参数标签是这样的: func fooClosure(fooClosure: (Bool) -> Swift.Void) 在某些情况下,我可以猜测它代表什么,在其他情况下,我不能。 例: 看一看UIActivityViewController的闭包之一(作为一个types别名): public typealias UIActivityViewControllerCompletionWithItemsHandler = (UIActivityType?, Bool, [Any]?, Error?) -> Swift.Void 第三类代表什么? 我必须看看Objective-C版本的代码,以知道这些是returnedItems 。 为什么没有这样实现:( 注意activityItems标签) public typealias UIActivityViewControllerCompletionWithItemsHandler = (UIActivityType?, Bool, _ activityItems: [Any]?, Error?) -> Swift.Void 编辑: – 这只是一个临时的状态(因为斯威夫特尚未完全集成在这些框架呢)? 如果没有参数标签,代码的可读性会降低

在Swift 2中创buildASYNC任务

我想在地图上显示用户当前的位置,我知道这不是即时的任务。 我想在ASYNC任务中调用我的showCurrentLocation()函数。 我试图学习callback闭包,但我不明白如何创buildASYNC任务。 我知道这不是一个最好的问题模板为stackoverflow,但我不知道我怎么能不同地问。 感谢您的任何帮助。 有一个很好的编码。

如何使Swift中的闭包从string中提取两个整数来执行计算

我目前使用Swift中的闭包map属性来从数组中提取线性因子,并计算跨越一个八度的音乐列表。 let tonic: Double = 261.626 // middle C let factors = [ 1.0, 1.125, 1.25, 1.333, 1.5, 1.625, 1.875] let frequencies = factors.map { $0 * tonic } print(frequencies) // [261.62599999999998, 294.32925, 327.03249999999997, 348.74745799999994, 392.43899999999996, 425.14224999999999, 490.54874999999993] 我想通过使闭包从一个string中提取两个整数并将它们分成各个因子来实现。 该string来自一个SCL调整文件 ,可能看起来像这样: // CDEFGAB let ratios = [ "1/1", "9/8", "5/4", "4/3", "3/2", "27/16", "15/8"] 可以这样做吗? […]

如何定义在Swift中的闭包数组?

我想要这样定义: public var reloadFRCsNeedToPerformWhenFail = [()->()]() 但是我得到一个错误

当被称为Objective-C块时,Swift结束崩溃

在我的项目中,我有Objective-C和Swift代码。 我有一些对象具有包含块来清除一些UITableViewconfiguration的属性。 使用它在Objective-C中工作,但使用Swift时会崩溃。 我已经将问题减less到尽可能最小,同时仍然是可重复的。 // in Objective-C @interface MyClass : NSObject @property (copy, nonatomic) NSString* (^block)(); – (NSString *)callTheBlock; @end @implementation MyClass – (NSString *)callTheBlock { if (self.block) { return self.block(); } else { return @"There is no spoon"; } } @end // In Swift // I actually have this in my AppDelegate to run […]

Swiftselect器和闭包讨论

我搜查了很多,并没有发现任何真正有助于解决我的问题… 我试图从头开始构build一个简单的UIControl,就像一个UIButton。 由于特殊原因,它不能成为UIControl的子类。 我需要这个控制来做这样的事情: myControl.addTarget(target: AnyObject?, action: Selector, forControlEvents: UIControlEvents) 问题是,当button被触摸时,执行这个select器的方法的实现需要“performSelector:”方法。 Swift没有“performSelector:”。 所以我教它可以使用闭包来实现。 我无法弄清楚如何捕捉我想修改closures内的对象。 而且我不知道如何处理参考周期和其他事情。 我甚至不知道我是否在正确的道路上取得成功。 我相信你们可以把我放在正确的轨道上! 我来自巴西,对我可怜的英语感到抱歉! 谢谢! :d 这是迄今为止… struct ClosureForEvent { var closure:(control:MyControl!)->() var event:UIControlEvents } class MyControl { private var closures:[ClosureForEvent]? init() {} func addClosureFor(event:UIControlEvents, closure:(control:MyControl!)->()) { if closures == nil { closures = [ClosureForEvent(closure: closure, event: event)] } else { […]

Swift在debugging和发布模式下performance不同

不知道这是与Swift,XCode或Alamofire的问题,但我认识到我的Swift / Objc混合应用程序中不同的地方奇怪的行为 。 它只发生在用Swift编写的部分,并使用闭包/联网。 下面是一个示例代码: Alamofire.request(.DELETE, "http://someUrl.com/user", parameters: nil) .response { (request, response, data, error) in // some cleanup code and an alert } 当我在我的iPhone上以debugging模式运行我的应用程序时, 它们都可以正常工作 ,清理代码和警报会像我们执行上面的代码所执行的“删除帐户”操作一样呈现。 但是,当我通过Testflight将应用程序发送给用户,或直接在同一个iPhone上运行我的应用程序,但使用发布构buildconfiguration时 ,清理代码不会运行 , 并且不显示警报 。 它看起来像整个封闭不叫。 有没有人有这种奇怪的行为的经验,并知道如何防止他们? 我不确定这里有什么问题,因此我很难找出一个可以在Debug和Release模式下工作的解决scheme。 感谢您的任何帮助! 环境:我使用Alamofire 1.1.3作为embedded式框架,作为git子模块集成到我的项目中。 该应用程序只运行在iOS 8+上,我的iPhone 6上安装了iOS 8.1.2。