从firebase数据库ios检索数据时出现问题
目前,我有一个应用程序正在使用Firebase数据库存储用户: 名称 学校 主题 在三个单独的文本字段中 现在,我已经设法允许用户在这三个文本字段中输入他的详细信息,并点击一个标记为update的按钮,然后将数据发送到我的firebase控制台 这意味着用户可以在登录时输入其详细信息、点击更新并查看它们。然而,一旦他们注销并再次登录,文本字段将为空,尽管firebase的服务器上存储了该信息 我已经玩了一整天试图让它工作,但没有用 这里有firebase参考和验证:从firebase数据库ios检索数据时出现问题,ios,objective-c,firebase,firebase-realtime-database,firebase-authentication,Ios,Objective C,Firebase,Firebase Realtime Database,Firebase Authentication,目前,我有一个应用程序正在使用Firebase数据库存储用户: 名称 学校 主题 在三个单独的文本字段中 现在,我已经设法允许用户在这三个文本字段中输入他的详细信息,并点击一个标记为update的按钮,然后将数据发送到我的firebase控制台 这意味着用户可以在登录时输入其详细信息、点击更新并查看它们。然而,一旦他们注销并再次登录,文本字段将为空,尽管firebase的服务器上存储了该信息 我已经玩了一整天试图让它工作,但没有用 这里有firebase参考和验证: self.rootR
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];
}
}
我遇到的问题是检索位于ViewDidDisplay中的以下代码中的数据:
[[_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)
}];
有什么想法吗?嘿,Joshua,我已经实现了firebase并成功地从firebase检索到了数据,但问题是我已经在swift中实现了。。。这是我的实际代码,如果这有助于您
**rootRef.queryOrderedByChild("search what you want like specific name etc etc").observeEventType(.ChildAdded, withBlock: { snapshot in
if snapshot.value is NSNull {
print("the chat model is null")
SVProgressHUD.dismiss()
SVProgressHUD.showErrorWithStatus("No messages")
}
else {
print(snapshot) }**
或者,如果您想要获取整个数据库JSON,这里是查询
**rootref.observeEventType(.ChildAdded) { (snapshot: FDataSnapshot!) in
// 3
let id = snapshot.value["senderId"] as! String
let text = snapshot.value["text"] as! String
// 4
self.addMessage(id, text: text)
// 5
self.finishReceivingMessage()
}**
这是一个很好的教程
如果您希望将其转换为objective-c,那么我当然会帮助您我设法将所有内容按如下方式排序:
-(void)configure:(NSString *)field {
_textFieldOne.text = field;
}
然后在代码中我遇到了问题:
[[_rootRef child:@"users"] observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
NSDictionary *usersDict = snapshot.value;
NSLog(@"%@",usersDict);
[usersDict objectForKey:_user.uid];
[self configure:[userDict objectForKey:@"Name"]];
}];
谢谢你的帮助。你试过什么?你不应该只是说我已经尝试了许多解决方案,我编辑了这些解决方案,以显示我一直在尝试的内容。你需要将字段分配给textfield文本,以便textfield更新。现在你只把它存储在ObjectShafi中,我现在被卡住的原因是因为我已经在从swift翻译了。我在底部的描述中突出显示了swift代码的外观