2017-09-04 12 views
0

私は質問を通してFirebaseに情報をアップロードしようとしていますが、私はこのロジックのいくつかに取り残されています。私の問題は、私が配列に作成したオブジェクトを格納しようとすると、[any]に[any]を添えることができないというエラーが出ます。今私が達成しようとしているのは、for-loopを使ってオブジェクトを配置するデータの配列を実行するif-else文がたくさんあるよりもむしろです。私はちょうど私が正しくそれを追加する方法についてちょっと立ち往生しており、援助を愛するだろう!配列を持つ配列を保存する - Swift

私の誤差がある。ここ"Cannot subscript a value of type [Any] with an index of type Any"

は私のデータ構造です:

allGenresData = [self.fiction, self.poetry, self.nonFiction, self.science] 
getData() 
+0

エラーメッセージはどうなりますか? – paper1111

+0

"Any型の値にAny型のインデックスを添字することはできません" – AndrewS

答えて

1

あなたの問題は、変数iallGenresDataの各要素を格納しているということです。

for i in (self.allGenresData) { 

しかし、それは配列のインデックスであるかのように、あなたはその後iを治療している:

self.allGenresData[i].append(data) 
は、

残念ながらiには、インデックスではなくサブアレイ自体が含まれています。これを解決するには、配列内の実際のインデックスにiを割り当てたいとします。

for i in self.allGenresData.indices { 

i変数は、配列の添字に適している必要があります:あなたはこのようなことを行うことができます。

+0

これは私が試みていることを正しく達成していないことに気付きましたそうするためには、allGenresData内にサブ配列された配列に情報を格納せず、すべての配列の数を出力するときに0を返し、エラー自体が解決されるので、allGenresData内にすべてを格納します。しかしながら – AndrewS

0

/** Setting up the Data **/ 

    var genresLabelIndex = ["Fiction", "Poetry", "NonFiction", "Science"] 

    var fiction = [InformationForFeed]() 
    var poetry = [InformationForFeed]() 
    var nonFiction = [InformationForFeed]() 
    var science = [InformationForFeed]() 
    var allGenresData = [[Any]]() 

    func getData() { 



     for genre in genresLabelIndex { 

      let dbReference = FIRDatabase.database().reference().child("genres").child(genre) 
      let query = dbReference.queryOrderedByKey().queryLimited(toFirst: 3) 

      query.observeSingleEvent(of: .value, with: { (snapshot : FIRDataSnapshot) in 

       if snapshot.childrenCount > 0 { 

        for snap in snapshot.children.allObjects as! [FIRDataSnapshot] { 

         let item = snap.value as! Dictionary<String,AnyObject?> 
         let data = InformationForFeed(dictionary: item as Dictionary<String,AnyObject>) 
         for i in (self.allGenresData) { 
          self.allGenresData[i].append(data) 
         } 
        } 
       } else { 
        print("This snap shot doesnt have any data") 
       } 
      }) 
     } 

     print(allGenresData) 

    } 

私のエラーは、私は次のことをやっている私のInit内の行self.allGenresData[i].append(data)
()であります

これを試してください:

var dataArray = [InformationForFeed]() 
let data = InformationForFeed(dictionary: item as Dictionary<String,AnyObject>) 
dataArray.append(data) 
for i in (self.allGenresData) { 
    self.allGenresData[i].append(dataArray) 
} 

* [[InformationForFeed]]InformationForFeedを入れようとしています。

+0

それ以外は同じエラーです[any]は[any]に添字できません – AndrewS

関連する問題