swift 3 - ios : 将任何对象转换为字符串

swift 3 - ios : convert anyObject to string

我们如何在swift 3中将任何对象转换为字符串,在旧版本中使用它非常容易。

var str = toString(AnyObject)

我试过 String(AnyObject) 但输出始终是可选的,即使我确定 AnyObject 不是可选值。

试试这个 -

var str:AnyObject?
str = "Hello, playground" as AnyObject?
if let value = str
{
   var a = value as! String
}

var a = str as? String

尝试

let a = "Test" as AnyObject
guard let b = a as? String else { // Something went wrong handle it here }
print(b) // Test

以下三个选项供您选择:

选项 1 - 如果让

if let b = a as? String {
    print(b) // Was a string
} else {
    print("Error") // Was not a string
}

选项 2 - 守卫让位

guard let b = a as? String
else {
    print("Error") // Was not a string
    return // needs a return or break here
}
print(b) // Was a string

选项 3 - 让 ?? (空合并运算符)

let b = a as? String ?? ""
print(b) // Print a blank string if a was not a string

编译器建议您将代码替换为:

let s = String(describing: str)

如果您希望以空字符串静默失败而不是将原本可能不是字符串的内容存储为字符串,则可以使用另一个选项。

let s =  str as? String ?? ""

否则你有办法在答案中识别和抛出错误 above/below。

这是一个简单的函数 (repl.it),它将把任何值混合成一个字符串,nil 变成一个空字符串。我发现它对于处理不一致地使用 null、空白、数字和数字字符串作为 ID 的 JSON 很有用。

import Foundation

func toString(_ value: Any?) -> String {
  return String(describing: value ?? "")
}

let d: NSDictionary = [
    "i" : 42,
    "s" : "Hello, World!"
]

dump(toString(d["i"]))
dump(toString(d["s"]))
dump(toString(d["x"]))

打印:

- "42"
- "Hello, World!"
- ""