String swift如何删除可选字符串

String swift如何删除可选字符串,string,swift,String,Swift,如何删除可选字符 我只想要输出“” 我该怎么办 嗯…在尝试通过字符串插值使用该选项之前,需要先将其展开。最安全的方法是: 实际上,当您将任何变量定义为可选变量时,您需要展开该可选值。要解决此问题,您必须将变量声明为非选项或put!(感叹号)在变量后面加上标记以展开选项值 var temp : String? // This is an optional. temp = "I am a programer" print(temp) // Optional("I

如何删除可选字符



我只想要输出“”

我该怎么办


嗯…

在尝试通过字符串插值使用该选项之前,需要先将其展开。最安全的方法是:


实际上,当您将任何变量定义为可选变量时,您需要展开该可选值。要解决此问题,您必须将变量声明为非选项或put!(感叹号)在变量后面加上标记以展开选项值

var temp : String? // This is an optional.
temp = "I am a programer"                
print(temp) // Optional("I am a programer")

var temp1 : String! // This is not optional.
temp1 = "I am a programer"
print(temp1) // "I am a programer"

检查零并使用“!”展开:


我又看了一遍,我正在简化我的答案。我认为这里的大多数答案都没有抓住要点。您通常希望打印变量是否有值,如果变量没有值,您也希望程序不会崩溃(所以不要使用!)。来,就这样做

    print("color: \(color ?? "")")

这将为您提供空白或值。

除了其他答案中提到的解决方案外,如果您希望在整个项目中始终避免该可选文本,您可以添加以下pod:

pod 'NoOptionalInterpolation'
()

pod添加了一个扩展来覆盖string interpolation init方法,从而一次性删除可选文本。它还提供了一个自定义操作符*来恢复默认行为

因此:

有关详细信息,请参阅此答案。

试试这个

var check:String?="optional String"
print(check!) //optional string. This will result in nil while unwrapping an optional value if value is not initialized or if initialized to nil.
print(check) //Optional("optional string") //nil values are handled in this statement
如果您确信变量中没有nil,请选择第一个。 此外,您还可以使用if-let或Guard-let语句来展开选项,而不会发生任何崩溃

 if let unwrapperStr = check
 {
    print(unwrapperStr) //optional String
 }
护卫队

 guard let gUnwrap = check else
 {
    //handle failed unwrap case here
 }
 print(gUnwrap) //optional String

swift3
中,您可以轻松删除可选的

if let value = optionalvariable{
 //in value you will get non optional value
}
打印(“imageURLString=“+imageURLString!”)


就用吧您只需输入
并且它将工作:

print(var1) // optional("something")

print(var1!) // "something"

简单地将
转换为
修复了我的问题:

usernameLabel.text = "\(userInfo?.userName)"


虽然我们可能有不同的背景,但下面的内容对我很有用

我把变量的每一部分都用括号括起来,然后在右括号外加了一个感叹号

例如,
print(documentData[“Miledge”])
更改为:

print((documentData["mileage"])!)

您好,我有相同的问题,我得到可选(3) 所以,我尝试了下面的代码

cell.lbl_Quantity.text=“(数据?.Quantity!)”/“可选(3)”

让数量=数据?数量


cell.lbl\u Quantity.text=“(数量!)”/“3”

当您将任何变量定义为可选变量时,需要展开该可选值。是否转换?去

@user1272854我答案中的代码应该是你想要的。您的代码与您在问题中发布的代码有什么不同吗?这是可行的,但强制展开选项是非常糟糕的做法。您正在丢弃Swift提供给您的所有类型安全性。使用
if let
guard
将可选变量绑定到常量变量。(见迈克的回答)情况并非如此。在第一个例子中,如果你使用print(检查!),而对象实际上是nil,它会使你的应用程序崩溃。添加感叹号将打开字符串的可选更改?一串。如果它为零,则将失败并导致崩溃。人们需要停止滥用该选项!操作人员选项之所以存在,是因为可选的概念是您希望允许变量可能为零。就像@MatthewKnippen所说的,如果你强制展开一个为零的可选项,那么应用程序就会崩溃。如果您需要强制展开选项,那么您可能不应该首先使用选项。至少你应该使用
if let
guard let else
展开来确保它不是零。我喜欢这样。尽管它涉及到更多的代码,但它是安全的,干净的,而且,如果可选项为nil,您可以执行操作,而无需在其他地方检查。哈哈,我经常使用它,但实际上并不知道它的功能。现在我特别需要它,但不知道如何搜索:D非常感谢,不@MaciejSwic这是应该的方式。我知道这是一篇老文章,但是我想我会澄清几点,所以如果现在有人看到这篇文章,他们会得到正确的信息。第一个println是no print,下一行是var temp1:String!不需要了!您只需要编写var temp1:String//这不是可选的。另外,在temp示例中,您可以通过编写print(temp!)/“I am a programmer”打印temp的值,而不必使用可选()命令,当然,如果使用!将导致错误,因此最好使用if let或guard来保护代码不受nil的影响。
这不是可选的
错误,它是一个IUO,“隐式展开可选”。其值在访问时自动展开。如果为零,应用程序将崩溃。@Moritz请研究这个问题。这不是关于坠机,我知道问题是关于什么的,啊哈。我要告诉你的是你说的是错的。你说“这不是可选的”的那一行,你错了,这是可选的,这是隐式展开的可选。欢迎来到StackOverflow,谢谢你的贡献!请确保您的答案清楚地说明了问题的解决方案,并解释为什么它有助于问题的原始海报。仅为链接或代码而没有太多解释的答案没有多大帮助,通常会被删除。仅为代码的答案没有多大帮助。请添加关于此代码如何解决问题的解释问题过于宽泛,不具体。我正在介绍如何删除打印选项的案例。我将变量声明为字符串,并通过在末尾添加感叹号来展开。当然,这是一个很长的答案。我认为拉杰什·穆里亚给出的答案是明确而简单的
if let value = optionalvariable{
 //in value you will get non optional value
}
print(var1) // optional("something")

print(var1!) // "something"
usernameLabel.text = "\(userInfo?.userName)"
usernameLabel.text = "\(userInfo!.userName)"
print((documentData["mileage"])!)
import UIKit

let characters = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]

var a: String = characters.randomElement()!
var b: String = characters.randomElement()!
var c: String = characters.randomElement()!
var d: String = characters.randomElement()!
var e: String = characters.randomElement()!
var f: String = characters.randomElement()!
var password = ("\(a)" + "\(b)" + "\(c)" + "\(d)" + "\(e)" + "\(f)")

    print ( password)