从 firebase 数据库中检索数据并在 Objective-C 中的 UITable 中显示

Posted

技术标签:

【中文标题】从 firebase 数据库中检索数据并在 Objective-C 中的 UITable 中显示【英文标题】:Retrieve data from firebase database and show in UITable in Objective-C 【发布时间】:2017-01-26 07:52:30 【问题描述】:

我在 Firebase 中有以下数据库,

我正在尝试检索数据并在 UITable 视图中显示它们。首先,我想从数据库中检索协议。目前只有一个协议记录,但未来会有很多记录。我试过下面的代码

- (void)viewDidLoad 
    [super viewDidLoad];

    // Uncomment the following line to preserve selection between presentations.
    //self.clearsSelectionOnViewWillAppear = NO;

    [[_firebaseDatabaseRef child:@"krib-60229"] observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot *_Nonnull snapshot)
        self.allSnapshot = [NSMutableArray array];
        NSLog(@"%@",self.allSnapshot);
        NSLog(@"%s","TestTestTest");
        for(snapshot in snapshot.children)
            [self.allSnapshot addObject:snapshot];
        
        [self.tableView reloadData];
    ];


#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
    return 3;


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    return [self.allSnapshot count];


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    FIRDataSnapshot *snapShot = [self.allSnapshot objectAtIndex:indexPath.row];

    NSString *testText = snapShot.value[@"landlordDisplayName"];

    cell.textLabel.text = testText;

    // Configure the cell...

    return cell;

我也没有得到任何检索或任何错误。我尝试放置 NSLog,但它们也没有打印。

【问题讨论】:

【参考方案1】:

请尝试以下几行。

 FIRDatabaseReference *rootRef= [[FIRDatabase database] referenceFromURL:[NSString stringWithFormat:@"%@/agreements",<database-url>]];
    [rootRef observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot *snapshot)
    
        if (snapshot.exists)
        
            NSLog(@“%@”,snapshot.value);            
        
    ];

【讨论】:

【参考方案2】:

@property FIRDatabaseReference *ref;

"在上面声明这个 ref 属性"

self.ref=[[FIRDatabase database] reference];
[[_ref child:@"your_child_name"] observeEventType:FIRDataEventTypeChildAdded withBlock:^(FIRDataSnapshot * _Nonnull snapshot) 
    if (snapshot.exists) 
        NSMutableDictionary *agreement = snapshot.value;
        NSLOG(@"%@" , agreement)
    


 withCancelBlock:^(NSError * _Nonnull error) 
 NSLog(@"%@", error.localizedDescription);
];

这对我有用!

【讨论】:

以上是关于从 firebase 数据库中检索数据并在 Objective-C 中的 UITable 中显示的主要内容,如果未能解决你的问题,请参考以下文章

Swift:从 Firebase 检索数据并在表格视图中显示

如何在多行中显示从firebase检索的数据? [关闭]

从 firebase 检索数据并将其显示在可扩展的 recyclerview 中

从firebase检索数据到android

在一个云功能中从 firebase 数据库中检索多个数据

我需要将当前日期与其他数据一起添加到 firebase Realtime 数据库,并在 kotlin android 中检索所有带有日期的数据