Использовать переменную вне блока 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];