は、通知のオブザーバーは、その通知を取得するとちょうど
override func viewDidLoad()
{
super.viewDidLoad()
//Add notification Observer to get status out of Async mode
NotificationCenter.default.addObserver(self, selector: #selector(loadList), name: NSNotification.Name(rawValue: "DocumentReceived"), object: nil)
}
今、あなたの関数で
public class func getProductsInShoppingList(name:String = "Default") -> DocumentSnapshot?{
let db = Firestore.firestore()
let defaults = UserDefaults.standard
let userId: String! = defaults.string(forKey: "UserUUID")
var doc:DocumentSnapshot?
db.collection("shoppingLists")
.whereField("users." + userId, isEqualTo: true)
.whereField("name", isEqualTo: name)
.limit(to: 1)
.getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
print("\(document.documentID) => \(document.data())")
doc = document
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "DocumentReceived"), object: nil)
break
}
}
}
return doc
}
としてオブザーバーを追加する - このように、必要な機能は
自体に呼び出されます
@objc func loadList(){
//load data here
}
注 - 操作は、あなただけが通知されますあなたはnotificationObserverを利用することができる一つの文書を取得し、ここで
public class func getProductsInShoppingList(name:String = "Default") -> DocumentSnapshot?{
let db = Firestore.firestore()
let defaults = UserDefaults.standard
let userId: String! = defaults.string(forKey: "UserUUID")
var doc:DocumentSnapshot?
db.collection("shoppingLists")
.whereField("users." + userId, isEqualTo: true)
.whereField("name", isEqualTo: name)
.limit(to: 1)
.getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
print("\(document.documentID) => \(document.data())")
doc = document
DispatchQueue.main.async {
//Load data here
}
break
}
}
}
return doc
}
を完了すると、それが
2番目のオプションを必要とされていない場合は データのロードを追加したオブザーバーを削除することを忘れないでください操作が完了し、必要な機能を呼び出すことができます –