タイトルに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はnilです。何かアドバイス?
このリンクをチェックアウト*リターン*が適切に使用されていない選択肢が常にあります。この場合、Firebase関数のコードがサーバーからデータを返す前に、リターンが実行されます。 Firebaseは非同期なので、そのようにコード化する必要があります。 [ダウンロード後の動作](https://stackoverflow.com/questions/43027817/how-to-perform-an-action-only-after-data-are-download-from-firebase/43029121#43029121)と[Firebase async task](https://stackoverflow.com/questions/38550634/swift-firebase-return-in-asynchron-task/38551937#38551937) – Jay
@Jayありがとう、私はそれを修正しましたが、問題はserviveStatusが実際にはnil !データを取得するのに間違ったことをしていますか? – user3582537