来自 api 请求的对象在 ForEach 中打印,但不在 List 中
Posted
技术标签:
【中文标题】来自 api 请求的对象在 ForEach 中打印,但不在 List 中【英文标题】:Object from api request prints in ForEach, but not in List 【发布时间】:2019-11-05 03:48:17 【问题描述】:我正在尝试创建从 API 请求中收到的对象列表。对象是可识别的。奇怪的是,当我在 ForEach 循环中迭代对象的titles 参数时,它会打印出预期的结果。但是,当我将其更改为列表时,它不会显示任何内容,也不会给出错误或任何其他指示出现问题。我错过了什么?
这是我的对象:
struct Item: Identifiable, Decodable
let id = UUID()
let title: String?
let canonicalURL: String?
let unread: Bool?
let author: String?
init(title: String?, canonicalURL: String?, unread: Bool?, author: String?)
self.title = title
self.canonicalURL = canonicalURL
self.unread = true
self.author = author
这是我的观点:
@ObservedObject var articlesVM = ArticlesViewModel()
var body: some View
NavigationView
ScrollView
ForEach (articlesVM.entries) entry in
Text(entry.title!)
//THIS WORKS
List (articlesVM.entries) entry in
Text(entry.title!)
//THIS DOESNT WORK
.navigationBarTitle("Articles")
.navigationBarItems(trailing: Button(action:
print("Fetching Data")
self.articlesVM.fetchArticles()
, label:
Text("Fetch Articles")
))
【问题讨论】:
【参考方案1】:列表本身是可滚动的。试试下面的正文:
var body: some View
NavigationView
List (articlesVM.entries) entry in
Text(entry.title!)
.navigationBarTitle("Articles")
.navigationBarItems(trailing: Button(action:
print("Fetching Data")
self.articlesVM.fetchArticles()
, label:
Text("Fetch Articles")
))
【讨论】:
以上是关于来自 api 请求的对象在 ForEach 中打印,但不在 List 中的主要内容,如果未能解决你的问题,请参考以下文章
反应式 Swift 使用来自 API 的实时数据 - 需要基本示例
在gridview上用c#显示来自rest api服务器的请求