错误:在这种情况下,“交易”对于类型查找是不明确的

时间:2019-12-21 11:06:31

标签: ios swift xcode core-data swiftui

我正在使用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)
    }
}

此错误是什么意思以及如何解决?

2 个答案:

答案 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用作泛型类型的每个位置的