如何在Firebase中获取数据?

时间:2016-12-07 03:08:39

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

我是Firebase的新手。我尝试在数据库中获取数据,但我的代码无效。这是我的代码:

- (void) getData{

    FIRDatabaseReference *ref = [[FIRDatabase database] reference];

    //READ DATA

    [[[ref child:@"buysell"] child:@"users"]  observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
        NSDictionary *dict = snapshot.value;
        NSLog(@"%@",dict);
    } withCancelBlock:^(NSError * _Nonnull error) {

    }];
}

它无法跳入withBlock:^(FIRDataSnapshot * _Nonnull snapshot)。什么似乎是错的?请帮我。感谢。

2 个答案:

答案 0 :(得分:1)

将其移至viewDidLoad FIRDatabaseReference * ref = [[FIRDatabase database] reference];

  1. 检查是否根据文档配置了所有内容。

  2. 检查键名

  3. 如果一切正常,请尝试更改此设置 尝试使用observeSingleEventOfType而不是observeEventType

    [[[self.ref child:@"buysell"] child:@"users"] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
         NSDictionary *dict = snapshot.value;
         NSLog(@"%@",dict);
    
    } withCancelBlock:^(NSError * _Nonnull error) {
        NSLog(@"%@", error.localizedDescription);
    }];
    
  4. 如果上述3不起作用,请检查错误陈述

答案 1 :(得分:0)

您可以轻松完成。如果您想使用此方法获取所有信息,可以执行此操作。确保您的数据库是公开的

@property (strong, nonatomic) FIRDatabaseReference *ref;

在界面上定义属性

 self.ref = [[FIRDatabase database] reference];
     [self.ref observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
            NSDictionary *usersDict = snapshot.value;

            NSLog(@"Information : %@",usersDict);
        }];

如果您想使用此功能获取特定部分,可以执行此操作

 [[self.ref child:@"results"] observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {

        NSDictionary *usersDict = snapshot.value;

        NSLog(@"Info : %@",usersDict);



    }];

我从Firebase获取的Json

{
   "results" : [
      {
"name":"test 1",
"URL" : "URL STRING"
      },
{
"name":"test 1",
"URL" : "URL STRING"
      },
{
"name":"test 1",
"URL" : "URL STRING"
      },
{
"name":"test 1",
"URL" : "URL STRING"
      }
 ]
}