在 Firebase 块外使用变量
Use Variable outside Firebase Block
大家好,我正在为我的 ios 项目使用 Firebase ...
当我查询数据库时,在 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];
我需要这个数值也在块外获得(在这个class的其他函数中)...
如何在 firebase 块之外使用 TotalCFU 变量?
您可以从块内部调用方法来处理该值。
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];
您 class 中的其他地方:
(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];
大家好,我正在为我的 ios 项目使用 Firebase ... 当我查询数据库时,在 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];
我需要这个数值也在块外获得(在这个class的其他函数中)...
如何在 firebase 块之外使用 TotalCFU 变量?
您可以从块内部调用方法来处理该值。
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];
您 class 中的其他地方:
(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];