发出从firebase数据库ios检索数据的问题

时间:2016-09-07 14:43:17

标签: ios objective-c firebase firebase-realtime-database firebase-authentication

目前我有一个使用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)

}]; 

有什么想法吗?

2 个答案:

答案 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"]];


}]; 

感谢您的帮助。