AWS DynamoDB使用Swift进行查询

时间:2018-01-15 16:55:18

标签: ios swift amazon-web-services amazon-dynamodb

我正在使用swift和AWS DynamoDB for mobile app。我按照教程,可以成功保存数据。但是,当我尝试加载数据时,我发现保存和加载数据总是在viewdidload中的所有任务完成之后,所以我无法在同一视图中传递数据?有没有办法立即保存或退出数据?

下面是我的代码

mapper.query(Table.self, expression: queryExpress).continueWith{(task: AWSTask<AWSDynamoDBPaginatedOutput>!) -> Any? in
        print("test")
        if let error = task.error as NSError? {
            print("The requst failed. Error: \(error)")
        }
        if let paginatedOutput = task.result {
            for item in paginatedOutput.items
            {
                print("quring")
               //pass info out to array
            }

        }
        return nil
    }

2 个答案:

答案 0 :(得分:0)

从网络中获取数据是一种异步操作。在完成屏幕时,您无法延迟加载屏幕。这可能需要很长时间。它可能永远不会完成。

您的视图控制器必须处理它尚未拥有数据的情况,并在该数据可用时自行更新。这样做的第一步是避免在视图控制器中进行网络查询。视图控制器永远不应直接查询网络。他们应该查询比视图控制器更长的模型对象。模型对象负责对网络进行查询并使用结果更新自己。然后视图控制器将根据模型自行更新。此模式的名称是模型视图控制器,是Cocoa开发的基础。 (搜索有关此模式的许多教程和讨论。)

但无论您在何处进行查询和存储数据,您始终都必须处理数据尚不可用的情况,并在此期间显示某些内容。在分布式系统中没有什么能解决这个问题。

答案 1 :(得分:0)

查询完成后,将数据加载到视图中。您可以使用viewDidLoad方法发送查询,但是当数据到达时,您需要使用您在数据到达时调用的其他方法来显示数据。