swift 3 - ios: конвертировать anyObject в строку
Как можно преобразовать anyobject в строку в swift 3, это очень просто в старой версии, используя.
var str = toString(AnyObject)
Я попробовал String(AnyObject)
но вывод всегда является необязательным, даже если я уверен, что AnyObject не является необязательным значением.
Ответы
Ответ 1
Компилятор предполагает, что вы заменяете свой код:
let s = String(describing: str)
Еще один вариант доступен, если у вас есть ситуация, когда вы хотите тихо провалиться с пустой строкой, а не хранить то, что первоначально не могло быть строкой в виде строки.
let s = str as? String ?? ""
иначе у вас есть способы определить и выбросить ошибку в ответах выше/ниже.
Ответ 2
Здесь три варианта для вас:
Вариант 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
Ответ 3
Пытаться
let a = "Test" as AnyObject
guard let b = a as? String else { // Something went wrong handle it here }
print(b) // Test
Ответ 4
попробуй это -
var str:AnyObject?
str = "Hello, playground" as AnyObject?
if let value = str
{
var a = value as! String
}
ИЛИ
var a = str as? String
Ответ 5
Здесь простая функция (repl.it), которая превращает любое значение в строку, а nil
становится пустой строкой. Я нашел это полезным для работы с JSON, который непоследовательно использует null
, пробелы, числа и числовые строки для идентификаторов.
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!"
- ""