キーと値のペアを設定した後、Swift辞書はnilを返します

ヴァンダル

私はテーブルビューコントローラーを使用して、ユーザーの職業に基づいてユーザーを区分しています。私は辞書から始めて、それを構造体に変換してさまざまなセクションを表示しています。

辞書は、ユーザーオブジェクトの文字列と配列を取ります。

var userByOccupation: [String: [User]] = [:]

バックエンド(firestore)から職業をプルし、次にユーザーをプルしてから、指定した職業にユーザーを追加します。ただし、値とキーを設定し、辞書から値の数を出力すると、nilが返されます。

getUsers()関数でエラーが発生します:

(出力もマークされている最後の3行を参照してください)

func getOccupations(){
    let db = Firestore.firestore()

    db.collection("occupations").getDocuments { (snapshot, err) in
        if let error = err {
            print("There was an error fetching documents: \(error)")
        } else {
            guard let documents = snapshot?.documents else { return }
            for document in documents {
                var occupationID = document.documentID
                db.collection("occupations").document(occupationID).collection("users").getDocuments(completion: { (secondSnapshot, error) in
                    if let err = error {
                        print("There was an error fetching documents: \(err)")
                    } else {
                        guard let secondDocuments = secondSnapshot?.documents else { return }
                        for document in secondDocuments {
                           self.getUsers(occupationID: occupationID, userID: document.documentID)
                        }
                    }
                })
            }
        }
    }
}

func getUsers(occupationID: String, userID: String) {
    let db = Firestore.firestore()
    db.collection("users").document(userID).getDocument(completion: { (snapshot, error) in
        if let err = error {
             print("There was an error fetching documents: \(err)")
        } else {
            if let dictionary = snapshot?.data() {
                let user = User(dictionary: dictionary  as [String: AnyObject])
                user.id = snapshot?.documentID
                print(occupationID) //MARK - prints: Janitor
                print(user.name) //MARK - prints: Jason
                self.userByOccupation[occupationID]?.append(user) //MARK: Setting the key & values
                print(self.userByOccupation.keys.count) //MARK - prints: nil.
            }
        }
    })
}
Sh_Khan

どちらを使用?するself.userByOccupation[occupationID]nil、最初はステートメントが無意味になります

self.userByOccupation[occupationID]?.append(user) 

への変更

self.userByOccupation[occupationID] = [user] // or use +=    

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

キーと値のペアの辞書を行列またはベクトルのRに格納します

分類Dev

辞書を比較し、キーと値のペアを削除します

分類Dev

辞書を作成し、キーと値のペアを動的に追加する方法は?

分類Dev

Python-キーと値のペアを配列の辞書に追加します

分類Dev

Pythonまたはreactjsの辞書を使用してテキストと値のペアを作成する

分類Dev

Swift:辞書を(キーまたは値で)ソートし、(キーまたは値の)順序付けられた配列を返します

分類Dev

C#は文字列を配列に分割し、次に辞書のキーと値のペアに分割します

分類Dev

Python3は、ネストされた辞書とリストの値で検索し、他の最も近いキーと値のペアを取得します

分類Dev

辞書のデータ構造はSwiftでnilを返します

分類Dev

辞書からキーを指定して、x個の以前のキーと値のペアを抽出します

分類Dev

文字列配列を分割し、キーと値のペアをリストまたは辞書に格納します

分類Dev

共通の値を持つ辞書からキーのペアのセットを返します

分類Dev

辞書「キーの値を設定」を使用すると、このエラーが発生します

分類Dev

既存のキーと値のペアを上書きせずに辞書を更新しますか?

分類Dev

辞書またはそのキーを値として関数に渡す

分類Dev

XCode7は辞書のキーと値を出力します

分類Dev

整数を使用して辞書内のキーと値のペアにアクセスしますか?

分類Dev

ブールキーと値のペアを使用して文字列を辞書形式に変換します

分類Dev

Excelから2つの列を引き出し、キーと値のペアを辞書に追加します

分類Dev

辞書の辞書で値として文字列を見つけ、そのキーを返します

分類Dev

キーと値のペアの複数のレイヤーを持つ辞書に行を分割します

分類Dev

辞書で最小のエントリを検索し、代わりに最後のキーと値のペアを取得します

分類Dev

辞書でキーと値のペアを合計しようとしています

分類Dev

辞書の特定の位置に新しいキーと値のペアを挿入します

分類Dev

NSDictionariesのNSArray-同じキーと値のペアを持つ辞書をマージします

分類Dev

2つのJTokenをキー/値のペアとして同時に辞書に追加します

分類Dev

linqを使用して辞書からネストされたキーと値のペアを取得する方法

分類Dev

タプルのタプルをキーと値のペアを持つ辞書に変換します

分類Dev

キーと値のペアを追加して、ネストされた辞書を拡張しようとしています

Related 関連記事

  1. 1

    キーと値のペアの辞書を行列またはベクトルのRに格納します

  2. 2

    辞書を比較し、キーと値のペアを削除します

  3. 3

    辞書を作成し、キーと値のペアを動的に追加する方法は?

  4. 4

    Python-キーと値のペアを配列の辞書に追加します

  5. 5

    Pythonまたはreactjsの辞書を使用してテキストと値のペアを作成する

  6. 6

    Swift:辞書を(キーまたは値で)ソートし、(キーまたは値の)順序付けられた配列を返します

  7. 7

    C#は文字列を配列に分割し、次に辞書のキーと値のペアに分割します

  8. 8

    Python3は、ネストされた辞書とリストの値で検索し、他の最も近いキーと値のペアを取得します

  9. 9

    辞書のデータ構造はSwiftでnilを返します

  10. 10

    辞書からキーを指定して、x個の以前のキーと値のペアを抽出します

  11. 11

    文字列配列を分割し、キーと値のペアをリストまたは辞書に格納します

  12. 12

    共通の値を持つ辞書からキーのペアのセットを返します

  13. 13

    辞書「キーの値を設定」を使用すると、このエラーが発生します

  14. 14

    既存のキーと値のペアを上書きせずに辞書を更新しますか?

  15. 15

    辞書またはそのキーを値として関数に渡す

  16. 16

    XCode7は辞書のキーと値を出力します

  17. 17

    整数を使用して辞書内のキーと値のペアにアクセスしますか?

  18. 18

    ブールキーと値のペアを使用して文字列を辞書形式に変換します

  19. 19

    Excelから2つの列を引き出し、キーと値のペアを辞書に追加します

  20. 20

    辞書の辞書で値として文字列を見つけ、そのキーを返します

  21. 21

    キーと値のペアの複数のレイヤーを持つ辞書に行を分割します

  22. 22

    辞書で最小のエントリを検索し、代わりに最後のキーと値のペアを取得します

  23. 23

    辞書でキーと値のペアを合計しようとしています

  24. 24

    辞書の特定の位置に新しいキーと値のペアを挿入します

  25. 25

    NSDictionariesのNSArray-同じキーと値のペアを持つ辞書をマージします

  26. 26

    2つのJTokenをキー/値のペアとして同時に辞書に追加します

  27. 27

    linqを使用して辞書からネストされたキーと値のペアを取得する方法

  28. 28

    タプルのタプルをキーと値のペアを持つ辞書に変換します

  29. 29

    キーと値のペアを追加して、ネストされた辞書を拡張しようとしています

ホットタグ

アーカイブ