SwifUI:我下载的JSON是否保存到coreData?

SwifUI:我下载的JSON是否保存到coreData?,json,core-data,swiftui,Json,Core Data,Swiftui,我一直在摆弄CoreData,这次我试图将下载的JSON保存到core数据中。我不会得到任何错误,直到我尝试显示列表,它将返回空。 任何建议都将不胜感激 模型 AttributeArticle+CoreDataProperties.swift extension AttributeArticle { @nonobjc public class func fetchRequest() -> NSFetchRequest<AttributeArticle> {

我一直在摆弄CoreData,这次我试图将下载的JSON保存到core数据中。我不会得到任何错误,直到我尝试显示列表,它将返回空。 任何建议都将不胜感激

模型

AttributeArticle+CoreDataProperties.swift

extension AttributeArticle {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<AttributeArticle> {
        return NSFetchRequest<AttributeArticle>(entityName: "AttributeArticle")
    }

    @NSManaged public var card_artwork_url: String?
    @NSManaged public var content_type: String?
   ...

    public var wrapperCard_artwork_url : String {
        card_artwork_url ?? "Unknown"
    }
    ...
}
我的名单:

    @Environment(\.managedObjectContext) var moc
    
    @FetchRequest(entity: AttributeArticle.entity(), sortDescriptors: []) var articles: FetchedResults<AttributeArticle>

VStack {
        List() {               
            ForEach(articles, id: \.id) { article in
               NavigationLink(destination: ArticleDetailView(articles: article)){
                   ArticleRowView(articles: article)
                   }
               }
            }
         }.onAppear {
            if self.articles.isEmpty {
                print("Articles is empty \(self.articles)")
                Article.loadDataToCD(moc: self.moc)
            }
@Environment(\.managedObjectContext)变量moc
@FetchRequest(实体:AttributeArticle.entity(),sortDescriptors:[])var文章:FetchedResults
VStack{
列表(){
ForEach(articles,id:\.id){articles in
导航链接(目的地:ArticleDetailView(文章:文章)){
ArticleRowView(文章:文章)
}
}
}
}奥纳佩尔先生{
如果self.articles.isEmpty{
打印(“文章为空\(self.Articles)”)
Article.loadDataToCD(moc:self.moc)
}

很抱歉发了这么长的帖子,感谢您的帮助!

您没有收到错误,因为您忽略了解码错误。有一个错误。谢谢您,我已修复,列表已显示。谢谢您为我指出这一点!
class Article {
    
    static func loadDataFromJSON(completion: @escaping ([ArticleData]) -> ()) {    
        let stringURL = "https://api.jsonbin.io/b/5ed679357741ef56a566a67f"
        
        guard let url = URL(string: stringURL) else { return }
        
        let request = URLRequest(url: url)
        
        URLSession.shared.dataTask(with: request) {
            data, response, error in
            
            guard let data = data else {
                print("No data in response \(error?.localizedDescription ?? "No data response")")
                return
            }
            
            if let decoderLoadedUser = try? JSONDecoder().decode([ArticleData].self, from: data) {
                
                completion(decoderLoadedUser)
                
            }
        }.resume()
    }
    
    
    
    static func loadDataToCD(moc: NSManagedObjectContext) {
        loadDataFromJSON { (articles) in
            DispatchQueue.main.async {
                
                var tempArticles = [AttributeArticle]()
                for article in articles {
                    
                    let newArticle = AttributeArticle(context: moc)
                    newArticle.name = article.attributes.name
                    newArticle.card_artwork_url = article.attributes.card_artwork_url
                    ... so on
                    ...
                    tempArticles.append(newArticle)
                }
                do {
                    try moc.save()
                } catch let error {
                    print("Could not save data: \(error.localizedDescription)")
                }
            }
        }
    }
    
}
    @Environment(\.managedObjectContext) var moc
    
    @FetchRequest(entity: AttributeArticle.entity(), sortDescriptors: []) var articles: FetchedResults<AttributeArticle>

VStack {
        List() {               
            ForEach(articles, id: \.id) { article in
               NavigationLink(destination: ArticleDetailView(articles: article)){
                   ArticleRowView(articles: article)
                   }
               }
            }
         }.onAppear {
            if self.articles.isEmpty {
                print("Articles is empty \(self.articles)")
                Article.loadDataToCD(moc: self.moc)
            }