相关疑难解决方法(0)

检查来自Alamofire和Swift的多个异步响应

我正在编写一个依赖于来自各种站点/服务的数据的应用程序,并且涉及基于来自这些不同来源的数据执行计算以生成最终产品.

我编写了一个带有两个函数的示例类,它们收集来自两个源的数据.我选择使函数不同,因为有时我们根据源应用不同的身份验证方法,但在这个例子中我只是将它们剥离到最简单的形式.这两个函数都使用Alamofire来触发和处理请求.

然后我有一个初始化函数,它说如果我们成功地从两个源收集数据,然后加载另一个nib文件,否则等待几秒钟,如果没有返回响应,则加载服务器错误nib文件.

我试图让这个例子尽可能简单.实质上.这是我想要遵循的那种逻辑.不幸的是,这似乎目前在其当前实施中不起作用.

import Foundation

class GrabData{
    var data_source_1:String?
    var data_source_2:String?

    init(){    
        // get data from source 1
        get_data_1{ data_source_1 in
            println("\(data_source_1)")
        }

        // get data from source 2
        get_data_2{ data_source_1 in
            println("\(data_source_1)")
        }

        var timer = 0;
        while(timer<5){
            if((data_source_1 == nil) && (data_source_2 == nil)){
                // do nothing unless 4 seconds has elapsed
                if (timer == 4){
                    // load server error nib
                }
            }else{
                // load another nib, and start manipulating data
            }
            // sleep for 1 second …
Run Code Online (Sandbox Code Playgroud)

asynchronous ios data-synchronization swift alamofire

12
推荐指数
1
解决办法
9181
查看次数

所有Firebase调用完成后如何重新加载数据?

我正在使用Firebase(Swift)读取用户所属的组ID列表,然后循环访问ID以获取有关组的更多信息.与此类似的东西(伪代码):

// List the names of all Mary's groups
var ref = new Firebase("https://docs-examples.firebaseio.com/web/org");
// fetch a list of Mary's groups
ref.child("users/mchen/groups").on('child_added', function(snapshot) {
  // for each group, fetch the name and print it
  String groupKey = snapshot.key();
  ref.child("groups/" + groupKey + "/name").once('value', function(snapshot) {
    System.out.println("Mary is a member of this group: " + snapshot.val());
  });
});
Run Code Online (Sandbox Code Playgroud)

我如何知道所有Firebase observeSingleEvent都已执行,因此我可以在我的集合视图中重新加载数据.

编辑:

经过更多的研究,这看起来非常类似于这个问题.我可以使用dispatch_groupBolts框架

编辑2:

感谢@appzYourLife的回答.我也能用它来解决它RxSwift.我只是用观察者包装Firebase调用并将它们保存在一个数组中然后调用

Observable.zip(observables, { _ in }).subscribe(onCompleted: {
       self.contentView.collection.reloadData() // do …
Run Code Online (Sandbox Code Playgroud)

ios firebase swift firebase-realtime-database

2
推荐指数
1
解决办法
1495
查看次数