Swift Firebase完成处理程序无法正常工作

时间:2017-10-04 16:15:45

标签: swift firebase firebase-realtime-database

我的代码调用Firebase并获取用户信息和用户图像。加载后,应用程序会填充图像字段和文本标签。至少,这就是假设的发生。但相反,我得到fatal error: Index out of range错误。我错过了什么?

这是我的代码:

@IBOutlet weak var userImage: UIImageView!
@IBOutlet weak var instructionsLabel: UILabel!
var currentUserName: String!

func loadExistingUsers(completion: @escaping () -> ()) {
    ref.child("members").observe(.childAdded) { (snapshot: FIRDataSnapshot) in
        if let dict = snapshot.value as? [String : Any] {
            let userPhotoUrl = dict["profileImageUrl"] as! String
            let userFirstName = dict["firstName"] as! String
            let userBirthday = dict["birthday"] as! Int
            let userPasscode = dict["passcode"] as! Int
            let userGender = dict["gender"] as! String
            let isUserChildOrParent = dict["childParent"] as! String

            let storageRef = FIRStorage.storage().reference(forURL: userPhotoUrl)
            storageRef.data(withMaxSize: 1 * 1024 * 1024, completion: { (data, error) in
                let pic = UIImage(data: data!)
                let user = User(profilePhoto: pic!,
                                userFirstName: userFirstName,
                                userBirthday: userBirthday,
                                userPasscode: userPasscode,
                                userGender: userGender,
                                isUserChildOrParent: isUserChildOrParent)
                self.users.append(user)
                self.users.sort(by: {$0.birthday < $1.birthday})
            })
            completion()
        }
    }
}

和我的ViewDidLoad电话:

loadExistingUsers {
        self.currentUserName = self.users[0].firstName   // error here
        self.instructionsLabel.text = "Choose daily and weekly job assignments for \(self.users[0].firstName)."
        self.userImage.image = self.users[0].photo
    }

我做错了什么?我知道我的基本代码很好,因为我已经测试过了。它只是完成处理程序的问题吗?任何帮助将不胜感激。

0 个答案:

没有答案