Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从firebase数据库ios检索数据时出现问题_Ios_Objective C_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

从firebase数据库ios检索数据时出现问题

从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

目前,我有一个应用程序正在使用Firebase数据库存储用户: 名称 学校 主题 在三个单独的文本字段中

现在,我已经设法允许用户在这三个文本字段中输入他的详细信息,并点击一个标记为update的按钮,然后将数据发送到我的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];  

}  

}  
我遇到的问题是检索位于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代码的外观