Comment puis-je regrouper mes données reçues de Firebase for fort> dans de Firebase Strong> J'ai reçu Array avec ces données: p> pour récupérer les données de Firestore fort> J'utilise ce code: p> protocol BookingDocumentSerializable {
init?(dictionary:[String:Any])
}
struct BookingHall {
var contactInfo: [String: Any] = [:]
var creationDate: Timestamp
var requestedTimes: [Int] = []
var uid: String = ""
var hall: String = ""
var requestedDate: Int = 0
var dictionary: [String: Any] {
return [
"contact_info": contactInfo,
"creation_date": creationDate,
"requested_times": requestedTimes,
"uid": uid,
"hall": hall,
"requested_date": requestedDate
]
}
}
extension BookingHall: BookingDocumentSerializable {
init?(dictionary: [String: Any]) {
let contactInfo = dictionary["contact_info"] as? [String: Any] ?? [:]
let creationDate = dictionary["creation_date"] as? Timestamp
let requestedTimes = dictionary["requested_times"] as? [Int] ?? []
let uid = dictionary["uid"] as? String ?? ""
let hall = dictionary["hall"] as? String ?? ""
let requestedDate = dictionary["requested_date"] as? Int ?? 0
self.init(contactInfo: contactInfo,
creationDate: creationDate!,
requestedTimes: requestedTimes,
uid: uid,
hall: hall,
requestedDate: requestedDate)
}
}
4 Réponses :
Vous pouvez utiliser un supplémentView décrit dans d'autres commentaires, mais en fonction du résultat que vous souhaitez obtenir, vous pouvez envisager cette option: P>
Soit Quel est l'avantage dans ce cas? Toute votre vue est utableview code> & chaque
utableviewCell code> aura un
uicollectionview code> à l'intérieur. Dans ce cas, vous pouvez mettre toutes vos données dans les cellules code> CollectionView code>, tandis que les en-têtes appartiennent au
TableView code> p>
vertical-défilable code>, mais chaque cellule peut être indépendamment
horizontale-défilable code> p>
Créer un dictionnaire pour stocker les données groupées après avoir attribué des valeurs sur Self.Bookinghall Array Groupez les données à la date p> func numberOfSections(in collectionView: UICollectionView) -> Int {
return groupedHalls.keys.count
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return groupedHalls[Array(groupedHalls.keys)[section]]?.count ?? 0
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let bookingHalls = groupedHalls[Array(groupedHalls.keys)[indexPath.section]]
let bookingHall = bookingHalls[indexPath.row]
let timeStart = bookingHall.requestedTimes.first!
let timeEnd = bookingHall.requestedTimes.last! + 1
cell.timeLabel.text = String(format: "%02d:00 - %02d:00", timeStart, timeEnd)
print(bookingHall)
}
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "headerBook", for: indexPath) as! StudioBookCollectionReusableView
header.dateLabel.text = "\(Array(groupedHalls.keys)[indexPath.section])"
return header
}
Vous devez cartographier votre JSON comme [(int, [(int, int)])] Code>: Votre tableau ressemblera à:
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "headerBook", for: indexPath) as! StudioBookCollectionReusableView
header.dateLabel.text = arrayForCollectionView[indexPath.section].0
return header
}
Vous pouvez utiliser init (groupement: par :) strong> p> crée un nouveau dictionnaire dont les clés sont les groupements retournés par le
la fermeture donnée et dont les valeurs sont des tableaux des éléments qui
retourné chaque clé. p>
blockQuote> Veuillez vous référer ci-dessous, c'est une idée juste de savoir comment vous pouvez implémenter l'exigence ci-dessus afin que je demande s'il vous plaît ignorer une autre erreur syntaxiale. p> < Strong> Créez une nouvelle structure pour le titre et la sous-réseau strong> p> regrouper code> pour atteindre votre besoin.
Quel moyen est dict [dict]!) Code>?
Heureux d'entendre! Joyeux codage
ajouté mon structure