ios – 如何在Swift 2中使用可选绑定

ios – 如何在Swift 2中使用可选绑定,第1张

概述我是学习 Swift的新手,所以我决定不再学习Swift 2.到目前为止,除了以下代码片段之外,一切对我都有意义.希望有人可以为我阐明这一点. //: Playground - noun: a place where people can playimport UIKit//Workslet possibleNumber="2"if let actualNumber = Int(poss 我是学习 Swift的新手,所以我决定不再学习Swift 2.到目前为止,除了以下代码片段之外,一切对我都有意义.希望有人可以为我阐明这一点.

//: Playground - noun: a place where people can playimport UIKit//Workslet possibleNumber="2"if let actualNumber = Int(possibleNumber) {    print("\'\(possibleNumber)\' has an integer value of \(actualNumber)")}else {    print("Could not be converted to integer")}//Doesn't Work and I'm not sure whylet testTextFIEld = UITextFIEld()testTextFIEld.text = "2"let numberString = testTextFIEld.text  //I kNow this is redundantif let num = Int(numberString) {    print("The number is: \(num)")}else {    print("Could not be converted to integer")}

代码的顶部部分直接来自Apple的Swift 2电子书,对我来说如何使用可选绑定将字符串转换为int是有意义的.第二段代码基本相同,只是字符串来自UITextFIEld的text属性.代码的底部给出以下错误:

游乐场执行失败:/var/folders/nl/5dr8btl543j51jkqypj4252mpcnq11/T/./lldb/843/playground21.swift:18:18:错误:可选类型’String?’的值没有打开;你的意思是用’!’要么 ‘?’?
if let num = Int(numberString){

我通过使用这一行解决了这个问题:

if let num = Int(numberString!) {

我只是想知道为什么第二个例子需要!而第一个没有.我确定问题与我从文本字段中获取字符串这一事实有关.谢谢!

解决方法 不同之处在于,在第一种情况下,possibleNumber不是可选变量.这绝对是一个字符串.它不能是零.

在第二种情况下,textFIEld.text返回一个可选字符串,因此numberString是一个可选变量.它可能是零.

现在……转换Int(“”)返回一个可选的int.如果字符串是“abc”,那么它不能返回一个数字,所以返回nil.这就是你用if let语句展开的内容.

但是,在第二种情况下,您的字符串也是可选的,Int()将不接受可选字符串.所以你强行打开它.这很危险,因为如果字符串为零,它可能会使应用程序崩溃.

你可以做的是……

if let numberString = textFeIDl.text,number = Int(numberString) {    // use the number}

这将首先解开文本,如果它可用,则使用它.得到号码.如果那不是零则输入块.

在Swift 2中你也可以在这里使用guard let功能.

刚刚看到你正在使用Swift 2.

你也可以这样做……

func getNumber() -> Int {    guard let numberString = textFIEld.text,number = Int(numberString)          else {          return 0    }    return number}
总结

以上是内存溢出为你收集整理的ios – 如何在Swift 2中使用可选绑定全部内容,希望文章能够帮你解决ios – 如何在Swift 2中使用可选绑定所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1075191.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存