Использовать переменную вне блока Firebase

Привет всем, я использую Firebase для своего проекта ios... У меня много проблем с использованием значений моих переменных вне блоков Firebase, когда я запрашиваю базу данных.

Например, в этом случае я пытаюсь получить числовое значение из этого запроса...

 FIRDatabaseReference *userDbRef = FIRDatabase.database.reference;
 [[[userDbRef child:RTDUSER] child:userID] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {

     NSUInteger totalCFU = [snapshot.value[RTDUSER_TOTALCFU] unsignedIntegerValue];

} withCancelBlock:nil];

Мне нужно, чтобы это числовое значение также получалось вне блока (в других функциях этого класса) ...

Как я могу использовать переменную TotalCFU вне блока firebase?

2 ответа

Решение

Вы можете вызвать метод изнутри блока для обработки значения.

FIRDatabaseReference *userDbRef = FIRDatabase.database.reference;
 [[[userDbRef child:RTDUSER] child:userID] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {

    NSUInteger totalCFU = [snapshot.value[RTDUSER_TOTALCFU] unsignedIntegerValue];

    // Call a function to handle value
    [self doSomethingWithCFU: totalCFU];

} withCancelBlock:nil];

Где-то еще в вашем классе:

(void)doSomethingWithCFU:(NSUInteger)totalCFU {
    // Do something with the value
}

Использование __block использовать вашу переменную снаружи.

FIRDatabaseReference *userDbRef = FIRDatabase.database.reference;
__block NSUInteger totalCF;
[[[userDbRef child:RTDUSER] child:userID] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {

     totalCFU = [snapshot.value[RTDUSER_TOTALCFU] unsignedIntegerValue];

} withCancelBlock:nil];
Другие вопросы по тегам