2016-10-14 11 views
6

どのようにanyオブジェクトをswift 3で文字列に変換できますか?これは古いバージョンでは非常に簡単です。swift 3 - ios:anyObjectを文字列に変換する

var str = toString(AnyObject) 

私はANYOBJECTはオプション値ではないことを確信している場合でも、私はString(AnyObject)を試してみましたが、出力は常にオプションです。

答えて

13

コンパイラは、あなたとあなたのコードを置き換えることを示唆していますもともと文字列ではないかもしれないものを文字列として格納するよりも。

let s = str as? String ?? "" 

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

0

これを試してみてください -

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

OR

var a = str as? String 
+0

ありがとうございました – Anthony

+1

'AnyObject'は' as! 'を使用している場合は値を持っている必要があります。そうでなければクラッシュします。 –

2

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

を試してみてくださいここにあなたのための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ましょう - としましょう?あなたは黙って、むしろ空の文字列で失敗したい状況がある場合

let s = String(describing: str) 

もう一つのオプションが利用可能である:(null合体演算子は)

let b = a as? String ?? "" 
print(b) // Print a blank string if a was not a string 
関連する問題