他们答应了第二部分,但我找不到第二部分,所以我想这从未做过.在第二部分中,他们承诺将使用此自定义数据服务(这对我来说是整个事情中最重要的部分)来检索和保存数据.
我正在考虑一个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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)