草庐IT

if-cases

全部标签

swift - 用 guard 检查 nil 而不是 if?

是否有一个guard相当于检查一个变量是否为nil?如果是这样,我如何将这样的语句翻译为使用guard?ifpost["preview"]!!=nil{//dostuff}else{//handlecasewherethevariableisnil} 最佳答案 就像有些人已经回答过的,你可以使用letguardletpreview=post["preview"]else{/*Handlenilcase*/return}如果不使用变量,可以使用下划线不声明变量,避免警告。guardlet_=post["preview"]else{/*

swift - 避免在 Swift 中连续声明 "if let"

这个问题在这里已经有了答案:Usingmultiplelet-aswithinaif-statementinSwift(3个答案)关闭5年前。在Swift中,我使用iflet声明来检查我的对象是否不是nilifletobj=optionalObj{}但有时,我不得不面对连续的iflet声明ifletobj=optionalObj{ifleta=obj.a{ifletb=a.b{//dostuff}}}我正在寻找一种方法来避免连续的iflet声明。我会尝试类似的东西:ifletobj=optionalObj&&ifleta=obj.a&&ifletb=a.b{//dostuff}但是sw

swift - if nil != optional ... 和 if let _ = optional ... 之间有什么区别?

我需要测试返回可选值的表达式是否为nil。这看起来很简单,但这是代码。ifnil!=self?.checklists.itemPassingTest({$0===note.object}){…}出于某种原因,我觉得这看起来很不愉快。ifletitem=self?.checklists.itemPassingTest({$0===note.object}){…}对我来说看起来好多了,但我实际上并不需要该元素,我只需要知道是否有返回。所以,我使用了以下内容。iflet_=self?.checklists.itemPassingTest({$0===note.object}){…}我是不是漏

swift - 有没有办法将 `if case` 语句写成表达式?

考虑这段代码:enumType{caseFoo(Int)caseBar(Int)varisBar:Bool{ifcase.Bar=self{returntrue}else{returnfalse}}}太恶心了。我想写这样的东西:enumType{caseFoo(Int)caseBar(Int)varisBar:Bool{returncase.Bar=self}}但是这样的构造在Swift中似乎不存在,或者我找不到。由于每个案例都有相关数据,我认为不可能以与上述表达式等效的方式实现~=运算符(或任何其他助手)。在任何情况下,ifcase语句对于所有枚举都是免费存在的,不需要手动实现。因此

swift - 如何在 Swift case 语句中分配变量

这有效但似乎效率低下:switchvar1{case1:string1="hello"case2:string1="there"default:string1="world"}但是string1=switchvar1{...抛出一个错误。是否有更有效的方式来编写switch/case,以便分配的变量不会在每一行中冗余列出?提前致谢! 最佳答案 如果您只在一个地方使用该代码,请将开关放在一个匿名闭包中。string1={switchvar1{case1:return"hello"case2:return"there"default:r

ios - Swift if 语句 - 多个条件用逗号分隔?

看Swiftexample:ifletsourceViewController=sender.sourceViewControlleras?MealViewController,meal=sourceViewController.meal{...}文档指出:...thecodeassignsthatviewcontrollertothelocalconstantsourceViewController,andcheckstoseeifthemealpropertyonsourceViewControllerisnil.问题:Swift是否允许您在if语句中使用逗号分隔的多个条件(如本例

swift - 如何对带参数的枚举进行 if-else 比较

这个问题在这里已经有了答案:HowtocompareenumwithassociatedvaluesbyignoringitsassociatedvalueinSwift?(9个回答)Compilererrorwhencomparingvaluesofenumtypewithassociatedvalues?(2个答案)关闭5年前。语言:Swift2.3例如,我将向您展示不同种类的枚举enumNormal{caseonecasetwo,three}enumNormalRaw:Int{caseonecasetwo,three}enumNormalArg{caseone(Int)caset

iOS 10.3 : NSStrikethroughStyleAttributeName is not rendered if applied to a sub range of NSMutableAttributedString

如果应用范围不是整个字符串范围,则不会呈现作为属性添加到NSMutableAttributedString实例的删除线(单、双、...)。这发生在使用addAttribute(_name:String,value:Any,range:NSRange),insert(_attrString:NSAttributedString,atloc:Int),append(_attrString:NSAttributedString),...在早期的iO​​S10.3测试版中被Apple破坏,在10.3final中没有修复。信用:https://openradar.appspot.com/3103

ios - 在 Swift 中 if let 赋值中 where 的用法

Swift手册第61页的Swift文档暗示了使用where将可选绑定(bind)与常规条件连接起来的可能性。然而,当我这样做时,我收到一条警告,建议我将where替换为逗号,如下面的代码:ifletgeocodingError=erroras?NSErrorwheregeocodingError.code==2 最佳答案 在Swift3中,这种语法发生了变化。什么是ifletx=y,a=bwherea==x{现在如果让x=y,让a=b,a==x{理由是if...{的每个子句现在都是一个独立的bool测试。查看XcodeRelease

swift - 在 if 语句中解包多个可选值

我想在一个if语句中解包两个可选值,但编译器提示密码常量运算符后的预期表达式。可能是什么原因?ifletemail=self.emailField?.text&&letpassword=self.passwordField?.text{//dosmthg}在Swift中完成。 最佳答案 好消息。Swift1.2(XCode6.3beta,2/9/15发布)现在支持在一行中展开多个可选值。不再需要元组/开关模式匹配。它实际上非常接近您最初建议的语法(感谢聆听,Apple!)ifletemail=emailField?.text,pas