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!"
- ""