使用CoreData缓存postItem时,保存后看不到任何帖子

问题描述

由于我不是CoreData的新手,所以我不确定如何解释此问题,但是实现此功能的方式如下所示:

...
@Environment(\.managedobjectContext) var managedobjectContext
@FetchRequest(fetchRequest: PostItem.getAllPosts()) var postItems:FetchedResults<PostItem>
@Observedobject var observed = observer()
@Observedobject var postobserved = Postobserver()
...
init() {
        self.setUpPosts()
    }
...    
func setUpPosts() {
    for i in postobserved.posts{
        let post = PostItem(context: self.managedobjectContext)
        post.type = i.type
        post.user = i.user
        post.image = i.thumb
        post.id = i.id
        post.text = i.text
        post.comment = i.comments
        post.video = i.media
        do{
            try self.managedobjectContext.save()
        }catch{
           print(error)
        }
    }
}
...
var body : some View{
        ZStack(alignment: .center){
                vstack{
                    if self.postItems.isEmpty {
                        Text("No Posts").fontWeight(.heavy)
                    } else {
                        ScrollView(.vertical,showsIndicators: false){
                            ForEach(self.postItems) { post in
                                PostCard(showComment: self.$showComment,post: post)
                                .background(Color.gray.opacity(0.1)).cornerRadius(50).padding()
                            }
                        }
                    }
                }
        }
    }

设置完dataModel和将引用该dataModel的类之后,我仍然对CoreData如何不保存这些帖子感到困惑。我没有得到一个错误。也许postObserved尚未与帖子一起设置,这导致setUpPosts不会将任何数据保存到dataModel中。将我推向正确方向的任何帮助都会有所帮助。

截至目前,iOS模拟器仅显示“无帖子”,这意味着postItems为空。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)