从Cloud Firestore获取地图数据 [英] Get map data from Cloud Firestore

查看:46
本文介绍了从Cloud Firestore获取地图数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从云 Firestore 中获取地图数据,这是Java代码,我需要快速访问同一数据库.我附上了Java代码和数据库结构图片以供参考.

I want to get map data from cloud Firestore,this is java code I need to access the same database in swift. I attached the java code and database structure picture for reference.

FirebaseFirestore db = FirebaseFirestore.getInstance();
    DocumentReference mDocRef = db.collection("hmdhAcademy").document("notifications");

    mDocRef.get().addOnCompleteListener(task -> {

        if ( task.isSuccessful() ) {

            DocumentSnapshot documentSnapshot = task.getResult();

            if ( documentSnapshot != null && documentSnapshot.exists() ){

                notificationList = (ArrayList) documentSnapshot.get("userNotifications");
                adapter = new NotificationAdapter(this,notificationList);
                mRecyclerView.setAdapter(adapter);
                alertDialog.dismiss();
            }
        }
        else {

            Toast.makeText(NotificationActivity.this,"Check Internet Connection",Toast.LENGTH_SHORT).show();
            alertDialog.dismiss();
        }

    });

if ( list.get(i) instanceof  HashMap ){

        final Intent intent = new Intent(mContext,NotificationDetail.class);

        String title = (String)((HashMap)list.get((list.size()-1)-i)).get("title");
        String body = (String)((HashMap)list.get((list.size()-1)-i)).get("body");
        String image = (String)((HashMap)list.get((list.size()-1)-i)).get("notiImage");
        String detail = (String)((HashMap)list.get((list.size()-1)-i)).get("detail");
}

我需要相同的标题,正文,notiImage和详细信息.

I need the same title, body, notiImage and detail.

请帮助我,我在任何地方都在寻找答案,但失败了.

Please help me with that, I'm looking for an answer anywhere but failed.

推荐答案

尝试以下代码:

docRef.getDocument { (document, error) in
if let document = document, document.exists {
    print(document.data()!)
    let userNotifications = document.data()["userNotifications"] as? [[String:Any]]
    for notificaton in userNotifications  {
        let body = notificaton["body"] as? String ?? ""
        let title = notificaton["title"] as? String ?? ""
        print(body, title)

    }

} else {
    print("Document does not exist")
}
}

或尝试这种方式:

  1. 创建结构

  1. Create a struct

struct usernotifcatons {

var body: String = ""
var detail: String = ""
var notiImage: String = ""
var title: String = ""


init(notificationData: [String:Any]) {

let body = notificationData["body"] as? String ?? ""
self.body = body

let detail = notificationData["detail"] as? String ?? ""
self.detail = detail

let notiImage = notificationData["notiImage"] as? String ?? ""
self.notiImage = notiImage

let title = notificationData["title"] as? String ?? ""
self.title = title
 }

}

  • 在ViewController中创建一个变量:

  • Create a variable in your ViewController:

    var allNotifications: [usernotifcatons] = [usernotifcatons]()
    

  • 将所有数据映射到您的Firestore代码中的一行中

  • Map all your data in one line in your firestore code

    docRef.getDocument { (document, error) in
    if let document = document, document.exists {
    print(document.data()!)
    let userNotifications = document.data()?["userNotifications"] as? [[String:Any]]
    for data in userNotifications! {
                self.allNotifications.append(usernotifications(notificationData: data))
            }
    print(self.allNotifications)
    
      } else {
    print("Document does not exist")
     }
    }
    

  • 这篇关于从Cloud Firestore获取地图数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆