2016-10-31 12 views
0

オプションNSArrayの最初のオブジェクトを印刷しようとしています。何も印刷されません。オプションのNSArrayをインデックス化できる配列にアンラップする方法がわかりません。今はNSArrayの最初の値を出力しようとしています。オプションNSArray - Anyオブジェクトにサブスクリプトメンバがありません

fireBaseRef.observeSingleEventOfType(.Value, withBlock: { snapshot in 

       if !snapshot.exists() { return } 

       for item in snapshot.children { 
       print("This is the child value of reference", item.value["reference"]) 

        if let referenceObjects = item.value["reference"] { 
         print("This is the first value", referenceObjects[0]) //error is Anyobject? has no subscript members 
        } 

       } 

      }) 

私はあなたのコードによると、以下の

This is the child value of track-titles Optional(<__NSArrayM0x618000049000>(
The Chainsmokers - Don't Let Me Down (Illenium Remix), 
Flume - Say It ft. Tove Lo (Illenium Remix), 
The Chainsmokers Ft. Halsey - Closer (GhostDragon Remix), 
Major Lazer & Showtek - Believer, 
Fire, 
ONE DANCE -- DRAKE (feat. Wizkid & Kyla), 
Let Me Love You - Justin Bieber (Trap Edit) 
) 
) 
+0

現在取得している出力を追加してください。 –

+0

what * is * 'item.value [" reference "]'?あなたはNSArrayについて話しますが、NSDictionaryとしてアンラップしようとします。 – luk2302

+0

@ luk2302、それはツリーまたはリファレンス名のタイトルです。私はNSArrayを取得しています..私はfirebaseを使用しています..うん、NSDictionaryで何をしているのかわからない... – cnichs27

答えて

1

を受け、referenceObjectsはNSDictionaryのではなく、NSArrayのです。したがって、あなたがreferenceObjectsを求める際に[0]ランタイムは、あなたがたNSArrayを取得したい場合は、次のようなものが動作するはずキー0

の値を試してみて、取得します:

if let referenceObjects = item.value["reference"] as? NSArray where !referenceObjects.isEmpty { 
    print("This is the first object: \(referenceObjects.first!)") 
} 

・ホープそれは助ける。

+0

@ cnichs27関係なく、あなたはまだキャストする必要があります。 – Alexander

+0

@AlexanderMomchliovあなたは正しいです! – cnichs27

-1

スナップショットがオプションのNSArrayとして戻ってきたので、このオブジェクトがnilの場合に、ダウンキャストの条件付き形式を使用する必要があります。

if let referenceObjects = item.value["reference"] as? NSArray { 
print(referenceObjects[0]) 
} 
+0

このコードスニペットは質問に答えるかもしれませんが、方法や理由を説明するための文脈を提供しません。答えを説明するために1つまたは2つの文を追加することを検討してください。 – brandonscript

+0

私の答えはあなたの質問に答えませんでしたか?フィードバックは私が混乱しているように歓迎します。 – Sparky

+0

また、referenceObjectsが空の場合、あなたが提示した答えは失敗します。 – Sparky

関連する問題