目前我有一个使用Firebase数据库存储用户的应用: 名称 学校 学科 在三个单独的文本字段中。
现在我设法允许用户在这三个文本字段中输入他的详细信息,然后点击标记为update的按钮,然后将该数据发送到我的firebase控制台。
这意味着用户可以输入他们的详细信息,点击更新并在他们登录时查看。但是一旦他们退出并再次登录,文本字段就是空白,尽管firebase已将信息存储在其服务器上
我一整天都在努力让它上班,但无济于事。
这里我们有firebase参考和auth:
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)
}];
有什么想法吗?
答案 0 :(得分:3)
嘿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()
}**
这是一个很好的教程 的 https://www.raywenderlich.com/122148/firebase-tutorial-real-time-chat 强>
如果您希望将其转换为objective-c,那么我当然会帮助您
答案 1 :(得分:3)
我设法将所有内容排序如下:
-(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"]];
}];
感谢您的帮助。