2016-06-06 6 views
4

저는 firebase 데이터를 배열에 저장하고 하루 종일 인쇄하려고했지만 아무 소용이 없었습니다. 나는 지역 사회의 도움에 정말로 감사 할 것입니다.Firebase 데이터를 어레이에 저장하고 출력하는 방법은 무엇입니까?

아래 enter image description here

는 중포 기지의 모습에서 함수가 데이터를 읽는 방법의 코드입니다 : 아래

현재 중포 기지 데이터베이스가 같은 모양을의 이미지입니다

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

에 쿼리를 변경할 질문 대신 이미지에 코드를 추가! – Shubhank

+0

데이터를 읽거나 데이터를 쓰고 싶습니까? 당신의 기능은 데이터 읽기에 관한 것입니다. 그래서 기본적으로 당신이 원하는 것은 –

+0

사과입니다. 나는 이미지보다 커뮤니티의 실제 코드를 알지 못했습니다. 나는 변화를 할 것이다. 데이터를 읽고, 배열에 삽입하고, 표시하려고합니다. –

답변

0

귀하 실제로 존재하지 않는 사용자 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"]; 
+0

알겠습니다. 위의 데이터베이스 이미지에는 다양한 사용자가 호텔 예약 목록을 보여줍니다. 특정 사용자가 모든 호텔 예약을 쿼리하고 싶었습니다. –

+0

내 편집을 확인하십시오 @ TonyOng – Shubhank

+0

NSLog가 "First Message is : Null"을 반환하면서 코드를 실행 해 보았습니다. 나는 그것을 왜 확신하지 못한다. 덕분에 –