【发布时间】:2017-01-15 07:48:14
【问题描述】:
目前我有一个使用 Firebase 数据库存储用户的应用: 姓名 学校 主题 在三个单独的文本字段中。
现在我已经设法让用户在这三个文本字段中输入他的详细信息并点击一个标记为更新的按钮,然后将数据发送到我的 firebase 控制台。
这意味着用户可以输入他们的详细信息,点击更新并在他们登录时查看它们。然而,一旦他们注销并再次登录,文本字段就是空白的,尽管 firebase 将信息存储在其服务器上.
我整天都在玩,试图让它工作,但无济于事。
这里我们有 firebase 参考和身份验证:
self.rootRef = [[FIRDatabase database] reference];
self.user = [FIRAuth auth].currentUser;
以及将用户信息发送到 firebase 数据库的更新按钮代码:
- (IBAction)didTapEditProfile:(id)sender {
if (![_textFieldOne.text isEqual: @""]) {
NSString *item = _textFieldOne.text;
[[[[_rootRef child:@"users"] child:_user.uid] child:@"Name"] setValue:item];
}
if (![_textFieldTwo.text isEqual: @""]) {
NSString *itemTwo = _textFieldTwo.text;
[[[[_rootRef child:@"users"] child:_user.uid] child:@"School"] setValue:itemTwo];
}
if (![_textFieldThree.text isEqual: @""]) {
NSString *itemThree = _textFieldThree.text;
[[[[_rootRef child:@"users"] child:_user.uid] child:@"Subject"] setValue:itemThree];
}
}
我遇到的问题是在下面位于 viewDidAppear 中的代码中检索数据:
[[_rootRef child:@"users"] observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
NSDictionary *usersDict = snapshot.value;
NSLog(@"%@",usersDict);
[usersDict objectForKey:_user.uid];
//I've tried numerous solutions here to get the text fields to display the info from the database
mainly:
NSString *field;
field = _textFieldOne.text;
field = [userDict objectForKey @"Name"];
The code i'm attempting to translate from looks like this:
field(userDict?.objectForKey("Name") as? String)
}];
有什么想法吗?
【问题讨论】:
-
你试过什么?你不应该只是说我已经尝试了很多解决方案
-
我已编辑以显示我一直在尝试的内容
-
您需要将该字段分配给文本字段文本,以便文本字段更新。目前你只将它存储在一个对象中
标签: ios objective-c firebase firebase-realtime-database firebase-authentication