SwiftUI核心数据错误-“无法将类型'FetchedResults <GCItem>'的值转换为预期的参数类型'Range <Int>'”

时间:2020-04-02 02:17:16

标签: core-data swiftui

有什么主意为什么我在这里遇到这个错误?我过去没有在单独的测试项目中使用Core Data。

无法将“ FetchedResults”类型的值转换为预期值 参数类型“范围”

SwiftUI查看代码(下面已标记错误)

import SwiftUI
import CoreData

struct ContentView: View {
    @Environment(\.managedObjectContext) var context
    @FetchRequest(entity: GCItem.entity(), sortDescriptors: []) var gcItems: FetchedResults<GCItem>

    private func addItem(title:String) {
        let newItem = GCItem(context: context)
        newItem.id = UUID()
        newItem.title = title
        do {
            try context.save()
        } catch let e as NSError {
            fatalError("Unresolved error \(e), \(e.userInfo)")
        }
    }

    var body: some View {
        NavigationView {
            VStack {
                List() {
                    ForEach(gcItems) { gcItem in   // ** ERROR HERE ***
                        HStack {
                            Text("test")
                        }
                    }
                }
                Button(action: { self.addItem(title: "Testing 123") }) {
                    Text("ADD ITEM")
                }
            }
        }
    }
}

错误的视觉图像

enter image description here

核心数据模型

enter image description here

核心数据文件

enter image description here

1 个答案:

答案 0 :(得分:4)

GCItem必须符合Identifiable才能使该代码正常工作。一个简单的空一致性应该起作用,因为它已经有一个id

extension GCItem: Identifiable { }