草庐IT

Closures

全部标签

swift - 了解 Swift 的闭包类型要求

我正在努力养成以Swifty方式而不是翻译Obj-C的方式做事的习惯。我正在用Parse做一个项目,在获取一堆Parse对象后,我想先对它们进行排序,然后从中提取特定的属性。这就是我现在正在尝试的:ifletnotifications=fetchedObjectsas?[PFObject]{//Thislinetellsme"Cannotinvoke'sorted'withanargumentlistoftype'((_,_)->_)'letsortedMessages:[String]=notifications.sorted{$0.createdAt.compare($1.crea

swift - swift 中具有不同输入的闭包字典

我需要在swift中定义一个方法调用字典,实际上我想要一个基于传入字符串的函数指针列表,这是Python中常见的一种模式,用于代替switch语句。也许我正在接近这个错误并且switch语句将是这里推荐的方法,但我想将设置逻辑移动到类成员变量声明中,而不是为了清晰起见将其驻留在构造函数中。这是我目前尝试的方法,这应该让您大致了解我要实现的目标:lettypeMap:[String:(AnyObject)->Void]=["UIButton.fgColor":{(value:UIColor)->VoidinUIButton.appearance().setTitleColor(value

swift - 从闭包中的函数返回

为什么在case1中,我的函数返回["reachedend":"reachedend"]而不是响应字典的值?如何让它返回responseDictionary的值?背景:HelperClass.doMath接受一个数字并有一个返回字典的完成blockfunchandleTask(task:[String:AnyObject])->AnyObject{switchtask{case1:ifletbigNumber=task[bigNumberKey]as?NSNumber{HelperClass.doMath(bigNumber,replyBlock:{(responseDictionar

swift - SKEase action,如何使用Float changing Action Setter Block?

在以下用例中,我尝试为SKShapeNode的lineWidth设置动画。SKEase属于精彩SpriteKitEasing来自CraigGrummitt的github存储库。它的一个功能是float更改缓动Action,它似乎会随时间改变float的值。但是我不知道如何使用它。Xcode在输入时给出以下建议:letlineWeight=SKEase.createFloatTween(Void))对于此库中的其他SKEase操作,Xcode对轻松类型非常有帮助,并有助于确定要输入的内容。有了这个,我不知道AHEasingFunctions有哪些选项...我可能会找到。但我完全不知道最后

ios - swift/iOS SDK : Generic Function with Class Type/Name Closure/Block Issue

我正在尝试编写一个通用类,它采用自定义类名并创建该类名的实例。在创建之前和之后,我做了一些适用于所有类的通用内容。我想向特定于类的实例添加一些参数。这就是为什么我添加了一个闭包,该闭包在使用实例对象本身作为闭包参数创建实例后被调用。关闭是可选的。有趣的是,在没有闭包的情况下调用函数工作得很好,如果我添加闭包,我会得到以下编译器错误:Expectedmembernameorconstructorcallaftertypename此编译器错误适用于第一个参数,这没有任何意义,因为仅使用第一个参数调用该函数就可以正常工作...我添加了我的简单示例以供Playground使用:classBas

Swift 在闭包中使用函数参数

我只是想在没有内存泄漏的情况下在swift闭包中使用函数参数,所以我只是想确认我是否按照以下方式进行操作是否会出现任何与内存相关的问题?请告诉我funcsomeMethod(someValue:String){weakvarweakSelf=selfvarcopyOfSomeValue:String?=someValue.copy()as?Stringself.someOtherMethodWithCompletion(completionHandler:{()->VoidinifletstrongSelf=weakSelf,letoriginalValue=copyOfSomeVal

swift - 是否有调用可选闭包的简写语法?

我们知道在Swift中我们可以做以下事情:ifmyHandler=myOptionalHandler{myHandler()}然而,这似乎有点啰嗦。有没有更短的路? 最佳答案 有一条更短的路!只需按如下方式执行可选闭包:myOptionalHandler?() 关于swift-是否有调用可选闭包的简写语法?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/34050564/

swift - 在 Swift 中将具有多个参数的函数作为闭包传递

是否可以将具有多个参数的函数/方法视为Swift中的闭包?我特别询问初始函数名称与其他函数相同的情况,并且通过其参数的数字/类型/名称来区分。例如,采用以下内容:classFoo{funcbar(bar:String){print("bar:\(bar)")}funcbar(bar:String,baz:String){print("bar:\(bar),baz:\(baz)")}}letfoo=Foo()letbar1:(String)->()=foo.barletbar2:(String,String)->()=???单个参数bar(_:)函数可以分配给(String)->()类型

swift - Swift 中的闭包和回调有什么区别?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭6年前。Improvethisquestion有人问我ObjectiveCblock是否更类似于闭包或回调。然而,回调的定义似乎与闭包几乎相同,至少在这个借自http://swiftspace.org/callback-function-in-swift/的例子中是这样。:funcmainFunction(callback:()->Void){//somecodecallback()//callthecallbackfunction}

swift - 闭包返回类型语法

我在一个导致一些困惑的结构中有以下闭包。varresponse:(result:Result)->VoidstructRegisterRequest:Requestable{letuserInfo:[String:AnyObject]varresponse:(result:Result)->Void}现在当我尝试实现它时,我有以下内容:letregister=RegisterRequest(userInfo:userInfo,response:{(result)in})如果闭包语法是{(params)->returnTypeinstatements}为什么swift自动将我的实现更正为