Swift - 处理从 Firestore 获取返回的数据

Swift - Working with data returned from Firestore fetching

我有一个名为 FavoriteArticleCoreData 对象。我将它存储在 Firestore 中,作为我拥有的每个用户的对象集合。

这是我的核心数据: my CoreData entity of FavoriteArticle

这是我的 Firestore: my Firestore hierarchy

当我尝试获取 currentUser 的 savedArticles 时,我遇到了一个我不知道如何解决的问题:

returns 是 [String:Any] 类型的数据,而我需要它是 [String:FavoriteArticle] 才能将其传递给 completionHandler 并稍后在我的应用程序中使用它.我无法使用 Firebase 的自定义对象代码,因为 CoreData 不符合 Codable.

这是我目前糟糕的解决方法尝试,但我的应用程序一直在 favoriteArticle.title = "\(document.data()["title"])" 线上崩溃,并出现错误 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[FavoriteArticle setTitle:]: unrecognized selector sent to instance 0x6000022ca840' -

func fetchUserDataCollection(uid: String, completionHandler: @escaping(String?,[String : FavoriteArticle]?) -> ()) {
    
    let docRef = database.collection("Users").document(uid).collection("savedArticles")
    docRef.getDocuments { (querySnapshot, error) in
        if let error = error {
            completionHandler("Error getting documents: \(error)",nil)
        } else {
            var resultsDictionary: [String: FavoriteArticle] = [:]
            for document in querySnapshot!.documents {
                let favoriteArticle = FavoriteArticle()
                print(document.data()["title"] as! String)
                favoriteArticle.title = "\(document.data()["title"])"
                favoriteArticle.isFavorite = (document.data()["isFavorite"] as? Bool)!
                favoriteArticle.author = document.data()["author"] as! String
                favoriteArticle.topic = document.data()["topic"] as! String
                favoriteArticle.imageUrl = document.data()["imageUrl"] as! String
                favoriteArticle.content = document.data()["content"] as! String
                favoriteArticle.url = document.data()["url"] as! String
                favoriteArticle.date = document.data()["date"] as! String
                
                resultsDictionary[document.documentID] = favoriteArticle
            }
            completionHandler(nil,resultsDictionary)
        }
    }
}

我该如何解决这个问题?

问题出在 let favoriteArticle = FavoriteArticle() 行,因为我忘记在其中添加上下文。更改为:

let favoriteArticle = FavoriteArticle(context: (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext)

已解决问题