【发布时间】:2021-08-13 16:34:38
【问题描述】:
@FetchRequest(
entity: Client.entity(),
sortDescriptors: [])
private var clients: FetchedResults<Client>
(...)
var searchResults: FetchedResults<Client> {
if searchText.isEmpty {
return clients
} else {
return clients.filter({$0.name!.contains(searchText)}) // Error here!
}
}
(...)
ForEach(searchResults, id: \.self) { client in
(...)
错误
Cannot convert return expression of type '[FetchedResults<Client>.Element]' (aka 'Array<Client>') to return type 'FetchedResults<Client>'
嗨,
我不确定我的逻辑是怎么错的。有人可以告诉我如何修复 searchResults 吗?
另外,这是过滤结果的更有效方式还是应该在 ForEach() 中过滤?当我将过滤器放入 ForEach() 时似乎很慢
【问题讨论】:
-
可能是
return Array(clients.filter{ ...})?但是您可能希望在 fetch 请求中而不是之后应用过滤器。想象一下,你有 500k 个元素,你检索 500k 然后过滤得到 100 个,但你可以过滤请求,只得到 100 个。 -
感谢您的回复。我按照你的建议做了:我正在获取过滤后的数据,而不是过滤获取的数据。