RealmSwift -将查询作为动态参数传递失败

qzlgjiam  于 2023-01-01  发布在  Swift
关注(0)|答案(2)|浏览(196)

我在传递查询作为函数参数时遇到了一个问题。虽然查询的类型与直接在类中使用时相同,(当我复制粘贴代码时,它工作),但它不会工作-返回一个基本的奇怪错误:
这是我访问过滤器的地方:
Cannot convert value of type 'Bool' to closure result type 'Query<Bool>'.

import SwiftUI
import RealmSwift

struct PostFeed: View {
    @ObservedResults(Post.self) private var posts
    
    init(where filter: ((Query<Post>) -> Query<Bool>)?) {
        self._posts = .init(Post.self, where: filter )
    }
}

这就是我通过过滤器的地方:

PostFeed { $0.posterId == id } // <-- Error appears here

...
如果删除动态查询参数并在视图中输入相同的查询,则该查询有效。否则,如果将其结构化为:

init(_ id: String) {
    self.id = id
    self._posts = .init(Post.self, where: {$0.posterId == id} )
}

以及

PostFeed(id)

我想让我的例子1起作用。有什么建议吗?

az31mfrm

az31mfrm1#

将参数类型更改为

init(where filter: ((Query<Post>) -> Bool)?) {
    self._posts = .init(Post.self, where: filter)
}
z31licg0

z31licg02#

在让同事检查这个问题后,我们发现代码工作正常。
命令+ K(清理构建文件夹)修复了这个问题。经典的XCode移动。

相关问题