我正在为移动应用程序使用 swift 和 AWS DynamoDB。我按照教程操作,可以成功保存数据。但是,当我尝试加载数据时,我发现我总是在 viewdidload 中的所有任务完成后保存和加载数据,所以我不能在同一个 View 中传递数据?有什么方法可以立即保存或淘汰数据?
下面是我的代码
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
}
最佳答案
从网络获取数据是一个异步操作。你不能在它完成时延迟加载屏幕。这可能需要很长时间。它可能永远不会完成。
你的 View Controller 必须处理它还没有数据的情况,并在数据可用时更新自己。第一步是避免在 View Controller 中进行网络查询。 View Controller 不应该直接查询网络。他们应该查询比 View Controller 生命周期更长的模型对象。模型对象负责对网络进行查询并使用结果更新自身。然后 View Controller 将根据模型更新自身。这种模式的名称是 Model View Controller,它是 Cocoa 开发的基础。 (搜索有关此模式的许多教程和讨论。)
但是无论您在何处进行查询和存储数据,您总是必须处理数据尚不可用的情况,并同时显示一些内容。在分布式系统中没有什么可以解决这个问题。
关于ios - 使用 Swift 的 AWS DynamoDB 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48267492/