从核心数据中获取数据

时间:2017-03-16 17:51:07

标签: arrays swift core-data firebase firebase-realtime-database

我是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
                }
            }

        })
    }
}

我的模特: enter image description here

1 个答案:

答案 0 :(得分:0)

Firebase不仅会填充您的Core Data数据库 - 您必须自己完成。

您可能需要查看Firebase的离线功能,这些功能更加自动(并且不使用CoreData):https://www.firebase.com/docs/ios/guide/offline-capabilities.html