Получить данные карты из Cloud Firestore - PullRequest
0 голосов
/ 13 мая 2019

Я хочу получить данные карты из облака Firestore, это код Java, который мне нужен для доступа к той же базе данных в swift. Я приложил код Java и изображение структуры базы данных для справки.

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");
}

enter image description here

Мне нужны тот же заголовок, тело, notiImage и детализация.

Пожалуйста, помогите мне с этим, я ищу ответ где угодно, но не смог.

1 Ответ

1 голос
/ 13 мая 2019

Попробуйте этот код:

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. Создать структуру

    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
     }
    
    }
    
  2. Создайте переменную в вашем ViewController:

    var allNotifications: [usernotifcatons] = [usernotifcatons]()
    
  3. Отобразите все ваши данные в одну строку в коде вашего пожарного магазина

    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")
     }
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...