我遇到的问题是与Firestore数据库通信后,Core Data无法正确保存。我想将每个帖子的用户图像和名称存储在缓存中以提高性能。目前,我有两个名为Users
和PostItem
的数据模型。 Users
是处理我要保存的用户数据的人。我成功实现了PostItem
,但没有实现Users
。
我认为它可以处理Firestore,但不是完全确定。代码:
private var username = String()
private var imageLink = String()
private var db = Firestore.firestore().collection("users")
func fetchUser(_ id: String) -> String {
db.document(id).getDocument { (snap,err) in
if let snap = snap,snap.exists {
self.username = snap.data()!["username"] as! String
} else {
print("Document does not exist")
}
}
print("DB: \(self.username)")
return self.username
}
func fetchUserImage(_ id: String) -> String {
db.document(id).getDocument { (snap,snap.exists {
self.imageLink = snap.data()!["image"] as? String ?? ""
}else{
print("Document does not exist")
}
}
print("DB: \(self.imageLink)")
return self.imageLink
}
func setUpPosts(managedobjectcontext: NSmanagedobjectcontext) {
if !self.newposts.isEmpty{
for i in self.newposts{
let user = Users(context: managedobjectcontext)
print("Fetched Name: \(self.fetchUser(i.user))")
user.name = self.username
print("Fetched Image: \(self.fetchUserImage(i.user))")
user.image = self.fetchUserImage(i.user)
user.uuid = i.user
let post = PostItem(context: 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 managedobjectcontext.save()
}catch{
print(error)
}
self.clearNewPosts()
}
}
}
setUpPosts()
是在处理所有视图数据的类的初始化器中调用的。