Swift AwaitKit с базой данных Firebase
Я пытаюсь реализовать базу данных Firebase с Swifts AwaitKit
, который доставляет await/async и использует swifts PromiseKit
под капотом. Проблема в том, что когда я помещаю код firebase в обещание, он всегда не работает NSURLSession
с этой ошибкой
"Сбой загрузки NSURLSession/NSURLConnection HTTP (kCFStreamErrorDomainSSL, -9802)"
Однако http сам по себе использует https, а не http. Я пытался разрешить NSAllowsArbitraryLoads
, NSExceptionDomains
ничто не помогает мне. Вот код.
let data: [String: Any] = [
"test": 1,
"test2": "user"
]
let promise: Promise<Bool> = Promise { resolve, reject in
ref.child("test/picks").setValue(data) { err, _ in
if err == nil {
resolve(true)
} else {
reject(err!)
}
}
}
let isStored = try! await(promise)
0 ответов
У меня такая же проблема, вот рабочий фрагмент с Xcode 11 Beta 5, SwiftUI, AwaitKit, PromiseKit и Firestore.
import Foundation
import Firebase
import PromiseKit
import AwaitKit
final class UserStore: ObservableObject {
let collection: CollectionReference
init() {
collection = Firestore.firestore().collection("users")
}
func create(userId: String, familyName: String, givenName: String, email: String) {
async {
let fetchUser : Promise<String> = Promise { seal in
self.collection.document("HFlTjPHgbXH96q6LQ93N").getDocument { (document, error) in
if let document = document, document.exists {
let dataDescription = document.data().map(String.init(describing:)) ?? "nil"
seal.fulfill(dataDescription)
} else {
seal.reject(NSError())
}
}
}
let user = try! await(fetchUser)
print("My user:", user)
}
}
}