제목에 Firebase에서 간단한 데이터를 검색하는 데 이상한 문제가 있지만 실제로 어디로 잘못 될지 알 수 없습니다.Swift를 사용하여 Firebase에서 데이터를 검색 할 수 없습니다.
이 내 스키마입니다 :
그리고이 코드 :
import Firebase
let DB_BASE = Database.database().reference()
class FirebaseService {
static let instance = FirebaseService()
private var REF_BASE = DB_BASE
private var REF_SERVICE_STATUS = DB_BASE.child("Service_Status")
struct ServiceStatus {
var downloadStatus: Bool
var uploadStatus: Bool
}
func getServiceStatus() -> (ServiceStatus?) {
var serviceStatus: ServiceStatus?
REF_SERVICE_STATUS.observeSingleEvent(of: .value) { (requestSnapshot) in
if let unwrapped = requestSnapshot.children.allObjects as? [DataSnapshot] {
for status in unwrapped {
serviceStatus.downloadStatus = status.childSnapshot(forPath: "Download_Status").value as! Bool
serviceStatus.uploadStatus = status.childSnapshot(forPath: "Upload_Status").value as! Bool
}
// THANKS TO JAY FOR CORRECTION
return sponsorStatus
}
}
}
}
하지만 마지막에 serviceStatus는 무기 호입니다. 어떤 충고?
에서이 링크를 확인 항상있다. 이 경우 Firebase 함수의 코드가 서버에서 데이터를 반환하기 전에 반환이 실행됩니다. Firebase는 비동기식이므로 코드를 작성해야합니다. [다운로드 후 조치] (https://stackoverflow.com/questions/43027817/how-to-perform-an-action-only-after-data-are-downloaded-from-firebase/43029121#43029121) 및 [Firebase 비동기 작업] (https://stackoverflow.com/questions/38550634/swift-firebase-return-in-asynchron-task/38551937#38551937) – Jay
@Jay 감사합니다. 문제는 serviveStatus가 실제로 nil입니다. ! 데이터를 검색하는 데 잘못된 것이 있습니까? – user3582537