2016-06-06 10 views
4

Ich hatte versucht, Firebase-Daten in einem Array zu speichern und sie den ganzen Tag lang auszudrucken, aber ohne Erfolg. Ich werde die Hilfe der Community sehr schätzen.Wie Sie Firebase-Daten im Array speichern und ausdrucken?

Unten ist ein Bild, wie die aktuelle Firebase-Datenbank wie folgt aussieht:

enter image description here

Unten ist der Code, wie die Funktion zum Lesen von Daten aus Feuerbasis wie folgt aussieht:

- (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); 

    } 


}]; 

} 
+0

fügen Sie Code auf Ihre Frage statt Bild! – Shubhank

+0

Sie möchten Daten lesen oder Daten schreiben ???? Ihre Funktion ist über Daten lesen ... so, was Sie wollen im Grunde –

+0

Entschuldigung, wusste ich nicht die Gemeinschaft favorisieren tatsächlichen Code über Bild. Ich werde die Änderungen vornehmen. Ich möchte die Daten lesen, in ein Array einfügen und sie anzeigen. –

Antwort

0

Ihre Code schlägt fehl, weil Sie das Kind vom Benutzer uid erhalten, die nicht tatsächlich vorhanden sind. Die K2xxxxxxxx sind eine eindeutige Zeichenfolge für jedes Element und entsprechen nicht der Benutzer-ID. Versuchen Sie, diese

_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]); 
     } 
    } 

}]; 

} 

Edit:

Zur Abfrage für einen bestimmten Benutzer - ändern Sie Ihre Anfrage an

FIRDatabaseQuery *userHotelBookingsQuery = [[_hotelRef queryOrderedByChild:@"userID"] queryEqualToValue:@"GEmxxxxxxxxx"]; 
+0

Ich verstehe. Im obigen Datenbankbild wird eine Liste von Hotelbuchungen von verschiedenen Benutzern angezeigt. Ich wollte alle Hotelbuchungen von einem bestimmten Benutzer abfragen. –

+0

check my edit @TonyOng – Shubhank

+0

Ich habe versucht, den Code auszuführen, den Sie angegeben haben, der NSLog gibt "First Message is: Null" zurück. Ich bin mir nicht sicher warum. –

Verwandte Themen