【发布时间】:2020-05-12 22:19:49
【问题描述】:
我正在尝试从 Firebase 检索值,然后对它们执行操作。但是,似乎这些值仅在函数调用内部分配。我的代码如下所示:
self.ref = [[FIRDatabase database] reference];
[[_ref child:@"user"] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
// Get all user wishlists
self.wishLists = [[NSMutableDictionary alloc] initWithDictionary:snapshot.value[@"wishlist"]];
NSLog(@"%@", self.wishLists);
} withCancelBlock:^(NSError * _Nonnull error) {
NSLog(@"%@", error.localizedDescription);
}];
NSLog(@"%@", self.wishLists);
for(id key in self.wishLists){
wishList *newList = [wishList new];
newList.name = key;
NSLog(@"%@", newList.name);
[self.listArray addObject:newList];
}
其中 self.wishLists 定义如下:
@property (strong) NSMutableDictionary *wishLists;
第一个 NSLog 调用 print wishList 成功地打印出该值,但第二个没有,这表明 self.wishLists 以某种方式为空,即使我将它分配给我从 Firebase 中提取的值。如何保持在函数之外分配的值?
【问题讨论】:
-
任何需要访问数据库数据的代码都需要在完成处理程序中(当数据可用时调用),或者从完成处理程序中调用。
标签: objective-c firebase firebase-realtime-database