我一直在尝试将firebase数据存储到一个数组中并整天打印出来,但无济于事.我真的很感谢社区的帮助.
下面是当前firebase数据库的外观图像:
- (void)readDataFromServer { _ref = [[FIRDatabase database] reference]; _hotelRef = [_ref child:@"hotel bookings"]; NSString *userID = [FIRAuth auth].currentUser.uid; FIRDatabaseQuery *userHotelBookingsQuery = [[_hotelRef child:userID] queryOrderedByChild:@"number"]; [userHotelBookingsQuery observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) { if (snapshot.value == [NSNull null]) { NSLog(@"No messages"); } else { [self.arrayOfBookingDetail removeAllObjects]; self.arrayOfBookingDetail = (snapshot.value); NSString *firstMessage = [self.arrayOfBookingDetail objectAtIndex:0]; NSLog(@"First message is: %@",firstMessage); } }]; }
解决方法
您的代码失败是因为您正在通过实际不存在的用户uid获取子代. K2xxxxxxxx是每个元素的唯一字符串,与用户ID不对应.试试这个
_ref = [[FIRDatabase database] reference]; _hotelRef = [_ref child:@"hotel bookings"]; FIRDatabaseQuery *userHotelBookingsQuery = [_hotelRef queryOrderedByChild:@"number"]; [userHotelBookingsQuery observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) { if (snapshot.value == [NSNull null]) { NSLog(@"No messages"); } else { //[self.arrayOfBookingDetail removeAllObjects]; //self.arrayOfBookingDetail = (snapshot.children); //NSString *firstMessage = [self.arrayOfBookingDetail objectAtIndex:0]; //NSLog(@"First message is: %@",firstMessage); NSDictionary *allUsersData = (NSDictionary*)snapshot.value; for (NSString *key in allUsersData.allKeys) { NSLog("@key is %@,data is %@",key,allUsersData[key]); } } }]; }
编辑:
FIRDatabaseQuery *userHotelBookingsQuery = [[_hotelRef queryOrderedByChild:@"userID"] queryEqualToValue:@"GEmxxxxxxxxx"];