草庐IT

if-else-statement

全部标签

swift - 是否可以使用 'if-case' 代替具有逗号分隔列表的开关?

Swift2引入了if-case这应该是一种更简洁的方式来表达只有少数case的switch。我想知道是否有一种方法可以将带有逗号分隔列表的switch语句表示为if-case。let(a,b)=(1,0)switch(a,b){case(1,0),(0,1),(1,1):print("true")default:print("false")}我尝试过的:ifcase(a,b)=(1,0){//works}ifcase(a,b)=(1,0),(0,1),(1,1){//doesn't}这会编译但会为(a,b)元组返回false:ifcase(a,b)=(1,0),case(a,b)=(

swift - 内联 if 语句在 void 返回闭包中改变 inout 参数,奇怪的错误(错误 : type 'Int1' does not conform to protocol 'BooleanType' )

我遇到了一个有点奇怪的(编译时)错误,我无法理解。以下片段给出了错误:/*error:type'Int1'doesnotconformtoprotocol'BooleanType'*/letclosure1:(inoutfoo:Int)->()={foo->()in(fooError:type'Int1'doesnotconformtoprotocol'BooleanType'请注意,这里的Int1不是拼写错误。问题1:为什么我不允许使用单个内联if语句(结果为'()')作为voidreturn闭包的隐式返回类型?问题2:出于好奇,Int1类型是什么?(奇怪的是,即使修改上面的闭包以类

swift - case 在 if-case 中是如何工作的

老C程序员可以在Swift方面得到一些帮助。我不太了解if-case语法。例如:ifcase20...30=age{print("inrange.")}case20...30=age似乎是if语句的条件测试。因此,最初看到使用赋值运算符('=')而不是比较运算符('==')时,我感到很困惑。好吧,我心想,这可能意味着case语句实际上是一个返回bool值的函数调用。返回值将满足if语句中的比较测试。作为实验,我尝试将case语句视为常规条件测试,并在其两边放置括号。Swift会很乐意接受if(x==5)或if(true)。但是if(case20...30=age)会产生错误。所以cas

swift - 为什么当我的便利初始化程序在 if-let 语句中运行 self.init 时,Swift 会给我一个编译器错误?

这是我想要编译的代码示例:classFruit{varname:Stringinit(name:String,season:String){self.name=name}convenienceinit?(data:[String:String]){ifletname=data["name"],region=data["region"]{self.init(name:name,season:region)}}}编译器错误是“在调用self.init之前在委托(delegate)初始化程序中使用‘self’”如果初始化程序是可失败的,我不应该能够拥有不运行任何初始化程序的代码路径吗?如果您

ios - 是否 managedObjectContext.object(with :) always refetch data if another (private) managedObjectContext changed and saved it?

(如果这个问题有点令人困惑/不精确,我很抱歉。我只是在学习高级CoreData用法,我不太了解术语和其他东西)。我有一个单例Game,它包含您在游戏过程中需要的某些数据。例如,您可以从那里访问currentSite(Site是一个CoreDataEntity)以获取Site用户目前位于://IcreatedtheSiteinabackgroundqueue(whenthegamestarted),thensavedtheobjectIDandhereIloadtheobjectIDpublicvarcurrentSiteObjectID:NSManagedObjectID{letobj

swift - 在 IF 语句中使用未解析的标识符

早上好我正在学习UdemyAppBrewer类(class)之一,我一直在研究如何解决其中一项工作。我做了我认为合乎逻辑的事情,但它返回了一个错误。我正在使用Swift尝试根据按下的按钮播放两种声音中的一种,使用标签值来定义要播放的声音。当我没有创建任何条件时,代码有效。我正在尝试使用IF语句来查看标记值,然后做出决定。我的问题是我得到一个“使用未解析的标识符”,在审查时听起来它不理解我的变量之一(条件中的那个)。我不明白为什么会这样,而且我对swift的了解不足,无法剖析它在我放入IF语句时不符合条件@IBActionfuncnotePressed(_sender:UIButton)

cocoa-touch - Xcode 提示使用 Swift 和 Xcode 6 的 if 语句结构

我想知道这个if语句有什么错误。我正在使用快速。我想要做的是从我的文本字段中执行多项检查,主要是将它们的文本长度限制在if语句中声明的范围之间。这是我的代码:ifcountElements(usernameTextField.text)4&&countElements(passwordTextField.text)>5&&countElements(passwordTextField.text)编译器提示如下:“输入‘字符串!’不符合协议(protocol)“_CollectionType””你们知道为什么会出现这种情况吗?提前感谢您的建议/建议/解释。干杯!

iOS Swift : how to check if Object exists in an Array so I don't add it to it, 或用它重新创建 GMSMarker?

我一直在为iOSsdk使用gmaps并遇到这个问题:每次map平移或缩放时并完成(我使用的是委托(delegate)idleAtCameraPosition)在我的服务器端我比较map中心的坐标,以便标记它周围的地方。当它们距离中心坐标足够近(1公里)时,我将这些位置保存在“位置”对象数组中。我的问题是我无法避免将重复的对象添加到数组中,所以每次我平移map但不改变相机位置时,屏幕上的现有标记都会重新显示添加到Places数组。我尝试使用此代码,但它不起作用并且数组可以无限增长直到应用程序崩溃:if(!arrayProp.contains(place)){arrayProp.appen

swift - 如何使用 if-let 在 Swift 中进行类型删除?

我看到很多关于类型删除的文章。但他们的大多数示例都侧重于将不同类型放入数组中。有什么方法可以让这段代码正常工作吗?protocolA{associatedtypeDatafuncprintThis(value:Data)}classB{}letx=B()iflety=xas?A{//Igeterroronthisline//Donothing}Xcode错误状态协议(protocol)“A”只能用作通用约束,因为它具有Self或关联类型要求此示例代码仅用于演示目的。 最佳答案 从Swift4开始,具有关联类型要求的协议(protoc

swift - 如何在 swift 中实现 remove_if(从数组中删除标点符号)?

问题假设我有一个字符串数组。仅使用函数式编程(map、reduce等...),我想创建一个没有任何标点符号的新数组。假设没有嵌入标点符号(即它们将单独存在)。lettest_arr=["This","is","a","test",";","try","it","."]letpunc=["!":true,".":true,"?":true,";":true]letnew_arr=test_arr.remove_if{punc[$0]?!=nil}//howtoimplement?也许这样的东西已经存在了?我没有在Apple文档中使用谷歌搜索。 最佳答案