0

大家好,我正在将 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];

我还需要在块外获得这个数值(在这个类的其他函数中)......

如何在 firebase 块之外使用 TotalCFU 变量?

4

2 回答 2

1

您可以从块内部调用方法来处理该值。

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
}
于 2018-04-18T16:23:37.833 回答
1

用于__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];
于 2018-04-18T16:26:18.703 回答