繁体   English   中英

类型“()”不能符合 Swift 中的“AccessibilityRotorContent”?

[英]Type '()' cannot conform to 'AccessibilityRotorContent' in Swift?

我正在尝试将来自 API 的响应保存在 CoreData 中。(不确定它是否是最好的位置)但是一旦我得到响应,我就会尝试保存它。

为此,我正在尝试 foreach 但低于错误。

如果在哪里存储核心数据以及如果它的正确位置如何摆脱这个错误需要帮助?

类型“()”不能符合“AccessibilityRotorContent”

import Foundation
import CoreData
import SwiftUI

class HomeViewModel: ObservableObject {

    @Published var results = [ResultItem]()
    let coreDM: PersistenceController = PersistenceController()


        func performSearch() {
            guard let gUrl = URL(
                string: "https://api.artic.edu/api/v1/artworks"
            ) else { return }
    
            Task {
                do {
                    let (data, _) = try await URLSession.shared.data(from: gUrl)
                    let response = try JSONDecoder()
                        .decode(ResponseData.self, from: data)
                    DispatchQueue.main.async { [weak self] in
                        self?.results = response.data ?? []
                        ForEach(self?.results ?? [], id: \.self) { // error here -- Type '()' cannot conform to 'AccessibilityRotorContent'
                            coreDM.saveResult(title: $0.title ?? "")
    
                            }
                    }
                } catch {
                    print("*** ERROR ***")
                }
            }
        }
    }

数据模型

import Foundation

// MARK: - Main Object
struct ResponseData: Codable, Hashable {
    let data: [ResultItem]?
}

// MARK: - Result Item
struct ResultItem: Codable, Hashable {
    var id: Double?
    var title: String?
}

核心数据

func saveResult(title: String) {
    let result =  Item(context: container.viewContext)
    result.title = title

    do {
        try container.viewContext.save()
    }
    catch {
        print("error")
    }
}

func getResult() -> [Item] {
    let fetchRequest: NSFetchRequest<Item> = Item.fetchRequest()

    do {
       return try container.viewContext.fetch(fetchRequest)
    }
    catch {
        return []
    }
}

正如已经建议的那样,您在这里使用了错误的方法。 ForEach是一个SwiftUI构造,用于呈现集合中的多个视图。 但是您在这里没有展示任何视图,因此您需要标准.forEach

results.forEach{
    coreDM.saveResult(title: $0.title ?? "")
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM