草庐IT

ios - 作为构造函数的闭包?

我在objciobook上看过这样的例子callback(Result{iflete=error{throwe}guardletd=dataelse{throwNoDataError()}returntryJSONDecoder().decode(User.self,from:d)})回调在哪里“callback:@escaping(Result)->()似乎Result是Swift定义的枚举类型,它正在使用闭包来创建自己?但是我没有看到任何关于这个的文档 最佳答案 有文档。表达式表示init(catching:)的尾随闭包语法Re

objective-c - 如何从闭包中强制捕获?

假设在Objective-C中有以下情况:一个block数组。所以我想运行一个block,我这样做:myBlockblock=blocks[0]();现在假设这一行在try中运行:myBlockblock=blocks[0];@try{block();}@catch{//catchanerror}现在想象一下,我想在block中添加一行以强制捕获。我在objective-C中所做的是将这一行添加到一个block中[NSExceptionraise:@"Failed"format:@"Failed",nil];现在我想在Swift中做到这一点letmyClousure=closures[

ios - UILabel 不会更新核心运动闭包内调用的文本

每次摇动设备时,我都试图更改UILabel的文本。我需要一些解决方法来捕捉比UIEventSubtype抖动更频繁的抖动。motionMethod被调用,尽管我的UILabel的文本在它最终更新之前保持不变几秒钟。这是我的代码:letdelegate=(UIApplication.sharedApplication().delegateasAppDelegate)varplayer:Player!varmotionManager:CMMotionManager?letaccThreshold=1.0varreferenceTime=NSDate()lettimeThreshold=0.

带闭包的 Swift 变量声明

我看到了一个让我感到困惑的声明。(这里的语法)staticvardateFormatter:NSDateFormatter={varformatter=NSDateFormatter()formatter.dateFormat="yyyy-MM-dd"returnformatter}()要声明一个变量,看起来它使用一个函数(初始化器)来创建一个。由于我不熟悉Swift中的闭包,我找到了一些有用的教程。但是,上面的示例似乎不适合其中任何一个。引用:http://fuckingclosuresyntax.com/任何建议、引用或教程将不胜感激。 最佳答案

swift - 你应该如何处理 UIAlertAction 的闭包参数

我一直在尝试创建一个UIAlertAtion,它也有一个处理程序。我阅读了this的答案问题并知道如何去做。我的问题只是关于它的关闭部分。1)我知道我可以写:{alertinprintln("Foo")}或{_inprintln("Foo")}但我不能写{println("Foo")}。在评论here之所以解释是因为您需要处理参数操作。这是否意味着由于处理程序的类型为(UIAlertAction)->Void)?我必须始终捕获传递的alertAction?2)我还读了this答案基本上是说你可以传入一个函数作为你的参数,但该函数应该采用UIAlertAction->Void类型的东西,

ios - 如何在 Swift 中创建闭包从字符串中提取两个整数以执行计算

我目前在Swift中使用带有闭包的map属性从数组中提取线性因子并计算跨越一个Octave音程的音乐频率列表。lettonic:Double=261.626//middleCletfactors=[1.0,1.125,1.25,1.333,1.5,1.625,1.875]letfrequencies=factors.map{$0*tonic}print(frequencies)//[261.62599999999998,294.32925,327.03249999999997,348.74745799999994,392.43899999999996,425.1422499999999

ios - 无法将 ComparisonResult 转换为闭包结果类型 Bool

这是我的代码:vardata=[list]()varfiltered=[list]()structlist{varlabel1:String=""varlabel2:String=""varlabel3:String=""}funcsearchBar(_searchBar:UISearchBar,textDidChangesearchText:String){filtered=data.filter{$0.label1.localizedCaseInsensitiveCompare(searchText)}if(filtered.count==0){searchActive=false

Swift 使用闭包初始化结构

publicstructStyle{publicvartest:Int?publicinit(_build:(Style)->Void){build(self)}}vars=Style{valueinvalue.test=1}变量声明错误Cannotfindaninitializerfortype'Style'thatacceptsanargumentlistoftype'((_)->_)'有谁知道为什么这行不通,对我来说这似乎是合法的代码郑重声明,这也行不通vars=Style({valueinvalue.test=1}) 最佳答案

swift - 如何让 Nil Coalescing 运算符处理闭包?

letnilClosure:(()->Void)?=nilletnotNillable:AnyObject=nilClosure??1为什么这不起作用?任何展示如何让NilCoalescing运算符使用闭包的示例都值得赞赏。我得到的错误是:Binaryoperator'??'cannotbeappliedtooperandsoftype'(()->Void)?and'Int"' 最佳答案 来自Apple的文档:Thenilcoalescingoperator(a??b)unwrapsanoptionalaifitcontainsav

ios - 缺少闭包默认初始值设定项 - 快速闭包变量声明?

我在viewController类外声明了闭包,我在viewController类内创建了该闭包的一个变量,但它显示此闭包缺少默认初始化程序的错误。我理解变量和常量声明以及必须在声明时分配默认初始化的后果。但我无法理解我的闭包的默认初始化是什么,我尝试了一些技巧来解决它但没有成功。这是我的关闭声明typealiascompletionBlock=(String)->()这是我对该闭包的变量声明,它提示我对其进行初始化。classViewController:UIViewController{varcompletionHandler:completionBlock=//Whatcould