ios – 自定义Firebase数据服务类:Swift 3

ios – 自定义Firebase数据服务类:Swift 3,第1张

概述我正在寻找一种干净的方法来从 Swift中的Firebase检索(有时保存)数据.令我讨厌的是我的所有数据库调用都是在视图控制器代码的中间编写的.所以我正在寻找某种自定义数据服务类.我发现这个教程与我想要的很接近: http://www.mobilecyberpunks.com/?p=82. 他们答应了第二部分,但我找不到第二部分,所以我想这从未做过.在第二部分中,他们承诺将使用此自定义数据服务( 我正在寻找一种干净的方法来从 Swift中的Firebase检索(有时保存)数据.令我讨厌的是我的所有数据库调用都是在视图控制器代码的中间编写的.所以我正在寻找某种自定义数据服务类.我发现这个教程与我想要的很接近: http://www.mobilecyberpunks.com/?p=82.

他们答应了第二部分,但我找不到第二部分,所以我想这从未做过.在第二部分中,他们承诺将使用此自定义数据服务(这对我来说是整个事情中最重要的部分)来检索和保存数据.

我正在考虑一个API类(就像在教程中一样),当我检索数据时,它完成从firebase检索,我将它保存在这个API类的数据集中.然后我将在通知中心发布通知.但我不确定这是最佳做法还是做到这一点的好方法.

有没有人知道如何做到这一点(完成本教程我发现或以其他方式)?

提前致谢!

解决方法 如果您需要广泛的功能并对服务器进行大量调用,那么为通信创建自定义类通常是个好主意.

两种首选方法是: –

>协议委托方法
> _completionBlocks:

以下答案包含两者.

自定义类

import Foundationimport Firebase@objc protocol FirshowAlertDelegate {    func showFIRAlert(_ message : String)    @objc optional func activityIndic()    }class FIRController :{  var delegate  : FirshowAlertDelegate!  func loginUser(_ emailAddress : String!,password : String,completionBlock : @escaPing ((currentUserID : String!) -> VoID)){    FIRAuth.auth()?.signIn(withEmail: emailAddress,password: password,completion: {(user,err) in                                        if err != nil{                                            self.delegate.showFIRAlert("Error logging you in,\(err?.localizedDescription)")                                             }else{                                            completionBlock(user!.uID)                                         }                        })        }func retrIEveUserData(_ currentID : String!,completionBlock : @escaPing ((_ username : String?) -> VoID)){  FIRDatabase.database().reference().child("Users").child(currentID).observeSingleEvent(of: .value,with: {(usersnap) in        if usersnap.exists(){            if let userDict = usersnap.value! as? [String:AnyObject]{                 completionBlock(userDict["username"] as! String            }        }else{            completionBlock(nil,nil)            print("No such user exists: \(currentID)")        }    }) }}

你的VIEwController

class AnyVIEwController : UIVIEwController,FirshowAlertDelegate{    let firebaseControllerHandle  : FIRController = FIRController()    overrIDe func vIEwDIDLoad() {    super.vIEwDIDLoad()         firebaseControllerHandle.delegate = self         firebaseControllerHandle.loginUser("abc@xyz.com",password: "123454321",completionBlock: { (userID) in             print("user : \(userID),logged in")        })               }     func showFIRAlert(_ message : String){       let alertController : UIAlertController = UIAlertController(Title: "MyApp",message: message,preferredStyle: .alert)       let okAction : UIAlertAction = UIAlertAction(Title: "Ok",style: .default) { (alert) in           print("User pressed ok function")          }       alertController.addAction(okAction)       alertController.popoverPresentationController?.sourceVIEw = vIEw       alertController.popoverPresentationController?.sourceRect = vIEw.frame       self.present(alertController,animated: true,completion: nil)    }    func activityIndic() {       // Use for showing the activity indicator while the data is being retrIEved     }    }
总结

以上是内存溢出为你收集整理的ios – 自定义Firebase数据服务类:Swift 3全部内容,希望文章能够帮你解决ios – 自定义Firebase数据服务类:Swift 3所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1077870.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存