草庐IT

enable_if_c

全部标签

swift - 赋值 vs if not equal to then assign ... Swift 是我最关心的语言

我有一些代码会经常运行。就性能而言,以下语句之间有什么区别吗?如果有,哪个更快?num=4对比ifnum!=4{num=4}我知道差异可能很小,但我有时会想到这个问题。此外,我会对与此密切相关的问题感兴趣,这些问题可能使用Bool或String而不是Int。 最佳答案 第一个肯定更快,因为处理器必须执行1条指令,这需要1个时钟周期。在第二个中,至少有1条或更多条指令(比较和可选赋值)。假设我们有这样的代码:varx=0x=4这里是程序集的重要行(swiftc-emit-assembly):movq$0,__Tv4test3numSi

swift - 由于 [weak self],我发现自己经常使用 "if self != nil"...这正常吗?

示例(在我的ViewController中):RESTApi.fetchUser(){[weakself]Voidinifself!=nil{//theviewcontrollerisstillhere.self!.items.append(stuff)self!.whatever}}我注意到我立即使用ifself!=nil,然后到处都是self!。有没有更好的办法?我觉得这有悖于Swift的方式。注意:我使用[weakself]因为我的ViewController可能为nil(如果用户在RESTApi下载数据之前返回)。 最佳答案

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