2017-09-21 6 views
1

私がデータを取得するためにsocket.ioを使用していますし、今それは私が'Any'型の配列が空であるかどうかをチェックするには?

socket.on("listeningOnSomething") { data, ack in 
     if (data[0].isEmpty?) { // Keep giving me error that 'Any' object has no isEmpty? object 

     } 
} 

実行しようとしました'Any'オブジェクトの配列

コード

socket.on("listeningOnSomething") { data, ack in 
    // data is an array of Any Type 
} 

を返します。データの結果が

空の場合

[()] 

それが空

[(

{ 
    name: "batman", 
    age: "47" 
} 
)] 
+1

'data [0]'がディクショナリであることをコンパイラに伝え、 'isEmpty'を使うことが許されます。 – Larme

答えて

4

でない場合は、タイプ[String: Any]の辞書にdata[0]をキャストする必要があります(ので[0].firstを使用すると、より安全な)

if (data[0] as? [String: Any])?.isEmpty ?? true { 
    ... 
} 

以上

if let dictionary = data.first as? [String: Any], dictionary.isEmpty { 
    ... 
} 
+2

'[0]'の代わりに '.first'を使用する必要があります。 –

+0

Anyがタイプ 'Hashable'に準拠していません。 – sinusGob

+0

2番目の方法は安全ですから使用しました。 – sinusGob

関連する問題