如何获取Firebase数据库中密钥的值并将其传递给TextField?

我想知道如何使用Objective C在我的JSON数据库中找到密钥的值并将其传递给文本字段。 我想从我的数据库中的第3个密钥收集数据(当然不包括标题节点),但是关于如何进行的每个解释似乎都不起作用。 遍历到正确位置的代码是:

FIRUser *user = [FIRAuth auth].currentUser; NSString* username = _usernameEntry.text; if (user) { [[[[_ref child: @"Users"] child:user.uid] child:@"Username"]observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) { User *username = [[User alloc] initWithUsername:snapshot.value[@"username"]]; } withCancelBlock:^(NSError * _Nonnull error) { NSLog(@"%@", error.localizedDescription); }]; _emailAddressEntry.text = user.email; } 

为了我。 我的目的是在视图控制器导航到时,用户名文本字段显示当前用户名。 这样,用户可以看到它现在是什么并编辑它,如果有任何错误输入/不满意(与电子邮件文本字段的完成方式类似)。

Side Note,用户名和电子邮件的存储/修改如下:

 NSString *userID = [FIRAuth auth].currentUser.uid; NSString* username = _usernameEntry.text; [[[_ref child:@"Users"] child:userID] setValue:@{@"Username": username}]; [[FIRAuth auth].currentUser updateEmail:_emailAddressEntry.text completion:^(NSError * _Nullable error) { if(error) { [_emailValidationCheck setTextColor:[UIColor redColor]]; _emailValidationCheck.text = @"Email Address modification was unsuccessful"; } else { [_emailValidationCheck setTextColor:[UIColor greenColor]]; _emailValidationCheck.text = @"Email Address modification was successful"; } }]; } 

另外,我有一个关于另外两件事的问题。 1)为什么在此遍历中始终会覆盖userID密钥? 我将其定义为在注册视图控制器中具有名称User_ID和uid的值,但是当人们在我的应用程序的配置文件页面上编辑他们的用户名时,它会被覆盖并变成关键字。 在此之前,它变成了名称(没有价值)。

 FIRUser *user = [FIRAuth auth].currentUser; if (user) { [[[[_ref child: @"Users"] child:user.uid] child:@"Username"] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot *snapshot) { if (snapshot.exists) { _usernameEntry.text = snapshot.value; } }]; _emailAddressEntry.text = user.email; } 

是我解决问题的解决方案。