gpt4 book ai didi

swift - 保存对下载的 DynamoDB 数据的引用

转载 作者:行者123 更新时间:2023-11-30 11:38:24 25 4
gpt4 key购买 nike

我有一个包含 DynamoDB 模型的类(为了简洁起见,我删除了变量数量,但它们都是可选字符串:

import AWSCore
import AWSDynamoDB

@objcMembers class Article: AWSDynamoDBObjectModel, AWSDynamoDBModeling {

var _articleSource: String?

class func dynamoDBTableName() -> String {
return "article"
}

class func hashKeyAttribute() -> String {
return "_articleId"
}

class func rangeKeyAttribute() -> String {
return "_articleUrl"
}

override class func jsonKeyPathsByPropertyKey() -> [AnyHashable: Any] {
return [
"_articleSource" : "articles.articleSource",
]
}
}

在我的 View Controller 中,我从表中下载数据并将每篇文章存储在一个数组中,如下所示:

let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default()
var allArticles = [AnyObject]()

func getArticles(completed: @escaping DownloadComplete) {
let scanExpression = AWSDynamoDBScanExpression()
scanExpression.limit = 50
self.dynamoDbObjectMapper.scan(Article.self, expression: scanExpression).continueWith(block: { (task:AWSTask<AWSDynamoDBPaginatedOutput>!) -> Any? in
if let error = task.error as NSError? {
print("The request failed. Error: \(error)")
} else if let paginatedOutput = task.result {
for article in paginatedOutput.items as! [Article] {
self.allArticles.append(article)
}
}
return(self.allArticles)
})
completed()
}

当我尝试使用应存储在 allArticles 中的数据时,数组为空。但是,当我在附加文章的下载 block 中中断执行时,该数组会保存文章。我如何保留下载数据的引用?我尝试使用完成 block 。

编辑:allArticles 的类型为[AnyObject],因为我尝试将总共 3 个不同类的对象存储在同一个数组中,以便更轻松地使用在表格 View 中

最佳答案

数组毕竟不是空的,我只是没有意识到这都是异步的(废话......)

我只需要:

DispatchQueue.main.async {
self.tableView.reloadData()
}

代替 getArticles() 函数中的 completed()

关于swift - 保存对下载的 DynamoDB 数据的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49481667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com