2016-12-07 6 views
0

Я новичок в Firebase. Я пытаюсь получить данные в базе данных, но мой код не работает. Вот мой код:Как получить данные в 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). Что кажется неправильным? Пожалуйста, помогите мне. Благодарю.

+0

У вас есть конфигурация красный? я имею в виду в соответствии с их рекомендациями. –

+0

Я следую за документом google. [Link] (https://firebase.google.com/docs/database/ios/read-and-write) – Rin

ответ

1

Переместить это для просмотраDidLoad FIRDatabaseReference * ref = [[База данных FIRDatabase]];

  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 не работает, проверьте ваше заявление об ошибке

+0

Спасибо U. Это работа! Это прыжок 2 раза в funcition :) – Rin

+0

блок асинхронный, поэтому он не будет прыгать внутри блока в первый раз – Sivagami

+0

большое вам спасибо – Rin

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); 



    }]; 

Мой извлечённому JSon От Firebase

{ 
    "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" 
     } 
] 
}