草庐IT

enable_if_c

全部标签

swift - 如何修复Xcode 8.3 'if let' 语句中类型转换的警告?

考虑以下代码:letnsdate:NSDate?=NSDate()ifletdate=nsdateas?Date{//awarningoccurshereprint(date)}编译器这样提示:Conditionaldowncastfrom'NSDate?'到“日期”是一个桥接转换;您是要使用“as”吗?从NSData到Data的转换有同样的问题。如何解决? 最佳答案 尝试转换为可选的日期:ifletdate=nsdateasDate?您正在尝试将optionalNSDateoptional转换为NONoptionalDate。只要

ios - Swift 良好编码实践 : If statement with optional type Bool

所以我一直在用Swift开发一个应用程序,今天我花了将近一个小时来调试一个问题,结果证明这是完全出乎意料的。这一切都源于下面的代码。if(hero.isAI){//isAIisaBool}问题是这个if语句总是返回true。所以我想也许我在某处将isAI设置为true但最后我意识到我将isAI声明为可选类型,如下所示。varisAI:Bool!应该是什么时候varisAI:Bool这导致if语句不检查isAI是否为真,而是检查它是否包含一个值。所以现在为了安全起见,我一定要像这样写我的if语句if(hero.isAI==true){//isAIisaBool}所以我的问题是,将来我有什

swift - 我用于 Realm 路径定义的#if TARGET_OS_SIMULATOR 代码有什么问题?

我有这个代码#ifTARGET_OS_SIMULATORletdevice=falseletRealmDB=try!Realm(path:"/Users/Admin/Desktop/realm/Realm.realm")#elseletdevice=trueletRealmDB=try!Realm()#endifdevicebool工作正常,但RealmDB仅适用于else条件。 最佳答案 从Xcode9.3+开始,Swift现在支持#iftargetEnvironment(simulator)检查您是否正在为模拟器构建。请停止使用

ios - 将 bool 保存到 NSUserDefaults 并使用 Swift 在 if 语句中使用它

我正在努力弄清楚如何使用Swift将boolean值保存到NSUserDefaults来执行if语句。我相信我知道如何将bool保存到NSUserDefaults,但对此的确认将不胜感激。这是我试图找出如何与swift一起使用的Objective-C代码。if(![[NSUserDefaultsstandardUserDefaults]boolForKey:@"onoroff"]){[[NSUserDefaultsstandardUserDefaults]setBool:YESforKey:@"onoroff"];}这就是我目前在Swift中所拥有的......ifNSUserDefa

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

if-statement - Swift 'If' 语句的多个条件?

有没有办法在Swift中编写如下的If语句?ifa>borc/d{//DoSomething} 最佳答案 无处不在:ifa>b||d%c==0{//dosth}我假设您的c/d意味着您希望d是c的倍数。 关于if-statement-Swift'If'语句的多个条件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/27463150/

swift - 在 Swift 中用逗号分隔多个 if 条件

我们已经知道multipleoptionalbindingscanbeusedinasingleif/guardstatementbyseparatingthemwithcommas,但不是&&例如//Worksasexpectedifleta=someOpt,b=someOtherOpt{}//Crashesifleta=someOpt&&b=someOtherOpt{}玩Playground,逗号格式似乎也适用于bool条件,尽管我在任何地方都找不到这个。例如if1==1,2==2{}//Seemstobethesameasif1==1&&2==2{}这是评估多个bool条件的公认

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

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

xcode - ld : -bundle and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together

我想构建我的应用并启用Bitcode。据我所知,我所有的第3方库依赖项都启用了Bitcode。但是当我进行构建时,出现此错误:ld:-bundle和-bitcode_bundle(Xcode设置ENABLE_BITCODE=YES)不能一起使用我该如何解决这个问题? 最佳答案 我错误地将我的DEBUG和TEST配置设置为使用Bitcode构建,这就是导致上述错误的原因。仅为RELEASE启用Bitcode修复了它:(您的应用程序和任何嵌入式框架目标应如下所示——根本不要在您的测试和UI测试目标上启用Bitcode。)

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