我是Swift的新手,我开始学习核心数据,但我遇到了问题。我无法从Core Data数据库中获取数据。 我想在核心数据中使用Firebase下载 由于某种原因,数据显示在Firebase而不是数据库中。 如何从数据库中提取数据?
这是我的控制器:
class InfoProfileViewController: UIViewController {
@IBOutlet weak var imageProfile: UIImageView!
@IBOutlet weak var nickProfile: UILabel!
@IBOutlet weak var emailProfile: UILabel!
@IBOutlet weak var numberProfile: UILabel!
var userData: UserData?
var managedObjextContext:NSManagedObjectContext!
var infoProfile = [User]()
override func viewDidLoad() {
super.viewDidLoad()
self.userData = UserData(user: (FIRAuth.auth()?.currentUser)!)
managedObjextContext = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
showAllUsers()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
private func loadData(){
let presentRequest:NSFetchRequest<User> = User.fetchRequest()
do {
infoProfile = try managedObjextContext.fetch(presentRequest)
print()
}catch {
print("Could not load data from database \(error.localizedDescription)")
}
}
private func showAllUsers() {
FIRDatabase.database().reference().child(UserData.DRIVERS_LOCATION_KEY).observeSingleEvent(of: FIRDataEventType.value, with: { (snapshot) in
let userItem = User(context: self.managedObjextContext)
if self.emailProfile.text != ""{
userItem.name = (self.userData?.nick)!
userItem.number = (self.userData?.number)!
userItem.avataURL = (self.userData?.avatarUrl)!
userItem.email = FIRAuth.auth()?.currentUser?.email!
do {
try self.managedObjextContext.save()
self.loadData()
print("Good save")
}catch {
print("Could not save data \(error.localizedDescription)")
}
}
//this my problem
do {
for profil in self.infoProfile{
self.emailProfile.text = profil.email
print(profil.email as Any)
self.nickProfile.text = profil.name
self.numberProfile.text = profil.number
}
}
})
}
}
答案 0 :(得分:0)
Firebase不仅会填充您的Core Data数据库 - 您必须自己完成。
您可能需要查看Firebase的离线功能,这些功能更加自动(并且不使用CoreData):https://www.firebase.com/docs/ios/guide/offline-capabilities.html