22

Swift 3で任意のオブジェクトを文字列に変換するにはどうすればよいですか。古いバージョンでは非常に簡単です。

var str = toString(AnyObject)

試してみString(AnyObject)ましたが、 AnyObject がオプションの値ではないことがわかっている場合でも、出力は常にオプションです。

4

5 に答える 5

41

コンパイラは、コードを次のものに置き換えることを提案します。

let s = String(describing: str)

もともと文字列ではない可能性のあるものを文字列として保存するのではなく、空の文字列でサイレントに失敗したい状況がある場合は、もう 1 つのオプションを使用できます。

let s =  str as? String ?? ""

それ以外の場合は、上記/以下の回答でエラーを特定してスローする方法があります。

于 2016-10-14T16:20:07.897 に答える
15

次の 3 つのオプションがあります。

オプション 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 - ?? (null 合体演算子)

let b = a as? String ?? ""
print(b) // Print a blank string if a was not a string
于 2016-10-14T13:47:21.137 に答える
2

試す

let a = "Test" as AnyObject
guard let b = a as? String else { // Something went wrong handle it here }
print(b) // Test
于 2016-10-14T13:37:28.077 に答える
0

これを試して -

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

また

var a = str as? String
于 2016-10-14T13:35:31.477 に答える