Je dois demander à une API, pour obtenir: les données utilisateur, l'utilisateur suivant, suivi des utilisateurs. Ce sont 3 API différentes. J'ai besoin de les appeler toutes les minutes. Je mets cette partie du code dans mon application délégué em> et je n'ai aucun problème avec cela. Mais j'ai besoin de rafraîchir le ViewController Code> L'utilisateur y est déjà, chaque fois que de nouvelles informations obtiennent du serveur. J'ai besoin de quelque chose comme rxswift em> pour vous abonner pour de nouvelles données et mettre à jour la vue lorsque de nouvelles données sont disponibles. Mais je ne sais pas comment le faire.Parce que mon appel API est dans l'application délégué em> et que l'utilisateur peut être dans n'importe quel
ViewController code>. P>.
3 Réponses :
Je ne connais pas RX Swift, mais ce que vous décrivez est un classique NotificationCenter A > Utilisez cas. Exemple: P>
Je voudrais
KVO est une autre façon d'aller, mais J'irais avec des notifications, étant donné le scénario que vous avez décrit. // This class does the API stuff
class MyClass{
static let myNotification = Notification.Name("com.mycompany.intersting-notification")
func apiCall(){
NotificationCenter.default.post(name: MyClass.myNotification, object: "Hello!")
}
}
// in your view controller
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(forName: MyClass.myNotification, object: nil, queue: nil) { (notification) in
if let str = notification.object as? String {
print("Somebody sent us this: \(str)!")
}
}
}
Vous pouvez utiliser NotificationCenter comme ci-dessous. Aussi, vous pouvez utiliser délégués , ici est un bon blog concernant NotificationCenter Blog . J'espère que cela aidera.
// In viewWillAppear override func viewWillAppear(_ animated: Bool) { NotificationCenter.default.addObserver(self, selector:#selector(GetApiDetails), name: NSNotification.Name(rawValue: "GetApiDetails"), object: nil) } // In viewWillDisappear override func viewWillDisappear(_ animated: Bool) { NotificationCenter.default.removeObserver(self, name: NSNotification.Name(rawValue: "GetApiDetails"), object: nil) } // Get/Use your related api result in this function @objc func GetApiDetails(notification: NSNotification){ // do your stuff here } // Now Call UserNotification Center method in your appdelegate file in a method and pass the values if you want to in your object like array or dictionary or according to your convenience. NotificationCenter.default.post(name: NSNotification.Name(rawValue: "GetApiDetails"), object: nil)
Si vous devez informer exemple par @moshebe gottlieb p> notificationCenter code> ou
kvo code> et si vous avez besoin, c'est seulement pour Accédez au résultat de l'API à travers l'application, vous pouvez utiliser singleton strong> (si les données sont temporairement requises) ou Stockage de persistance forte> (si les données doivent être stockées en permanence) telles que
nsuserdefaults code>,
sqlite code> ou
coredata code>