我正在使用CoreData在SwiftUI中编写一个应用程序。我在一个视图中遇到错误:
在这种情况下,“交易”对于类型查找是不明确的
由于此错误,预览不适用于此视图。但是,我可以构建该应用程序并在Simulator中运行。
我遇到问题的代码如下:
import SwiftUI
struct TransactionsListView: View {
var fetchRequest: FetchRequest<Transaction>
var transactions: FetchedResults<Transaction> { fetchRequest.wrappedValue }
var body: some View {
Text("test")
// Some other code that doesn't make the error
}
init(filter: Bool?) {
if let filter = filter {
fetchRequest = FetchRequest<Transaction>(entity: Transaction.entity(), sortDescriptors: [], predicate: NSPredicate(format: "income = %d", filter))
} else {
fetchRequest = FetchRequest<Transaction>(entity: Transaction.entity(), sortDescriptors: [])
}
}
}
struct TransactionsListView_Previews: PreviewProvider {
static var previews: some View {
TransactionsListView(filter: true)
}
}
此错误是什么意思以及如何解决?
答案 0 :(得分:1)
我认为问题在于您为实体选择的名称,该名称与SwiftUI中定义的结构冲突。参见the documentation。
尝试使用其他实体名称。
答案 1 :(得分:1)
这是诊断日志:
TestCoreDataBinding.Transaction:1:33: note: found this candidate @objc(Transaction) public class Transaction : NSManagedObject { ^ SwiftUI.Transaction:2:15: note: found this candidate public struct Transaction {
您已经为混淆类型明确指定了模块名称,如下所示:
var fetchRequest: FetchRequest<TestCoreDataBinding.Transaction>
var transactions: FetchedResults<TestCoreDataBinding.Transaction> { fetchRequest.wrappedValue }
在文件Transaction
用作泛型类型的每个位置的。