草庐IT

swift - If Let Error - 条件绑定(bind)的初始化程序必须具有可选类型,而不是 '[NSObject : AnyObject]'

这是我的代码。PFUser.logInWithUsernameInBackground(email,password:password){(user:PFUser!,error:NSError!)->Voidinifuser!=nil{PushNotication.parsePushUserAssign()ProgressHUD.showSuccess("Welcomeback,\(user[PF_USER_FULLNAME])!")self.dismissViewControllerAnimated(true,completion:nil)}else{ifletinfo=error.

swift - 带有 let 的三元语法更好?

在下面的示例中,是否有更好的方法来对DEF进行赋值?我想将类型A转换为类型B,但仍尽可能保留nil可能性。然而,似乎找不到更好的方法来做到这一点。有什么建议吗?classABC{varDEF:Int?funcX(someValue:Int8?){DEF=someValue!=nil?Int(someValue):nil}} 最佳答案 swift1:classABC{varDEF:Int?funcX(someValue:Int8?){DEF=someValue.map{Int($0)}}}swift2:classABC{varDEF:

swift - 非枚举的 "guard case let"是如何工作的

拜托,谁能解释一下为什么会这样?funchowMany()->Int{return11}guardcaseletoutput=howMany(),output>10else{return}我理解guard/if/while/forcaselet如何与枚举一起工作。模式匹配很棒。但是这里没有枚举,这也有效。允许这样做的语言结构是什么?(这个例子摘自MattNeuburg的书。) 最佳答案 这是ifcase结构。(guard只是一个否定的if,如果你明白我的意思。)这个构造的整体思想是,它让您可以使用普通的if或guard,同时利用sw

swift - 无法分配给属性 : 'card' is a 'let' constant in a for loop in swift

这个问题在这里已经有了答案:"Cannotassignto"erroriteratingthrougharrayofstruct(3个答案)关闭4年前。无法分配给属性:“card”是chooseCard方法中for循环中的“let”常量。我无法弄清楚为什么错误会出现在for循环中。我在代码中遗漏了什么。请帮忙。importFoundationclassConcentration{varcards=[Card]()varfaceUpCount=0funcchooseCard(atIndex:Int){varalreadyFaceUpCard=Card()iffaceUpCount==0{

swift - 为什么可以更改由 let 声明的结构?

在下面的代码中,'ptr'是一个let声明的结构体,但是它的成员变量'pointee'是可以改变的,为什么?letptr=UnsafeMutablePointer.allocate(capacity:1)ptr.pointee=1 最佳答案 这里,ptr是常量,所以你不能给它分配一个新的UnsafeMutablePointer,但是它包含的结构可以修改。简而言之,您不能将任何内容重新分配给let实体,但您可以访问和修改其属性。 关于swift-为什么可以更改由let声明的结构?,我们在S

swift - 如何将闭包类型的 let 属性初始化为指向某个方法的指针?

看看下面的代码classExample{letaction:String->()init(){action=method//error:Variableself.actionusedbeforeinitialized}funcmethod(s:String){println(s)}}我正在将闭包类型的属性设置为类方法。要引用类方法,我需要初始化单个属性,但要正确初始化它,我需要引用该方法。我如何摆脱循环?我知道我可以做类似的事情init(){action={_in}action=method//error:Variableself.actionusedbeforeinitialized

为什么 Swift let 在类中是可变的?

大家好,我想弄清楚为什么下面的swift代码允许我为类(class)中的wee字符串分配一个新值。我认为let是不可变的,但它在这里有效。有人可以解释一下吗?谢谢。importFoundationclassMyClass{letwee:Stringinit?(inInt:Int){letj:String="what"//j="Ishouldn'tbeabletodothiswihtlet"//errorrightlyso//println(j)self.wee="wow"ifinInt!=2{returnnil}self.wee="hey"self.wee="blas"//Ishoul

ios - 检查 `if let` 是否为零

我有一个应用程序,我目前正在使用SwiftKeychainWrapper.下面是我检查retrievedString是否为nil的代码。但是,我仍然在控制台中收到retrievedString:nil。if-let语句中的代码不应该运行,还是我对if-let的使用/理解不正确?对于给定的示例,使用if-let解包我的可选值的正确方法是什么?ifletretrievedString:String?=KeychainWrapper.stringForKey("username"){print("retrievedString:\(retrievedString)")//valuenotni

arrays - Array.reduce 无法通过下标赋值 : 'x' is a 'let' constant

我正在尝试对数组使用reduce函数:varfields=["gender","name","nickname"]varstats=fields.reduce([String:String]()){(res,field)->[String:String]inres[field]=json[field]??""returnres}它只是遍历fields数组并将值从json对象分配给res。对我来说似乎很简单,但编译器一直在说:error:cannotassignthroughsubscript:'res'isa'let'constant在线:res[field]=json[field]?

swift - let 如何评估 Swift 中的 bool 值?

我正在阅读SwiftProgrammingLanguage书籍,让您像许多其他人一样熟悉Swift语言。上面写着Inanifstatement,theconditionalmustbeaBooleanexpression—thismeansthatcodesuchasifscore{...}isanerror,notanimplicitcomparisontozero.据我所知,条件必须评估bool值。即使它是一个整数值,它也不起作用。但是我不明白的是ifletconvertedRank=Rank.fromRaw(3){letthreeDescription=convertedRank