-2
votes

Tri des dictionnaire imbriqué à Swift4 par clé

Actuellement, j'ai un dictionnaire imbriqué déclaré comme xxx pré>

i reçoit des résultats comme: p> xxx pré>

Je veux trier ce résultat si que les résultats seraient en ordre par la première clé. P>

SO: P>

["0": ["time": "6:16 PM", "date": "1/15", "name": "Bob"], 
 "1": ["time": "1:15PM", "date": "1/15", "name": "John"], 
 "2": ["time": "tbd", "date": "1/15", "name": "Chris"]]


5 commentaires

Dictionnaire est non ordonné, vous ne pouvez pas le trier. Quoi qu'il en soit, vous pouvez créer tableau de celui-ci


Les dictionnaires sont une collection non ordonnée, vous ne pouvez donc pas le trier. Vous devez utiliser une autre collection et implémenter la logique pour convertir ce dictionnaire et le trier. Indice: tableau de dictionnaire où chaque index représente la valeur numérique de sa clé de dictionnaire correspondante.


Je suggérerais que vous créez des structs plutôt que d'utiliser des dictionnaires. Vous pouvez ensuite avoir un tableau de structures et trier que


Dupliquer possible de Comment trier le dictionnaire par les clés où les valeurs sont des objets d'objets à Swift 4?


Dupliqué possible de trier dictionnaire par clés


3 Réponses :


0
votes

Dictionnaire code> est non-commandé, vous ne pouvez pas le trier.


mais, dans votre cas, je me débarrasserais du dictionnaire et je n'aurais que contenir votre modèle. p>

créer personnalisé struct code> qui représenterait votre événement, puis vous pouvez trier votre tableau par la propriété ID P> P>

struct Event {
    let time, date, name: String
    let id: Int
}

var userSchedule = ["2": ["time": "tbd", "date": "1/15", "name": "Chris"],
                    "0": ["time": "6:16 PM", "date": "1/15", "name": "Bob"],
                    "1": ["time": "1:15PM", "date": "1/15", "name": "John"]]

var schedule = userSchedule.compactMap { (event) -> Event? in
    guard let time = event.value["time"], let date = event.value["date"], let name = event.value["name"], let id = Int(event.key) else { return nil }
    return Event(time: time, date: date, name: name, id: id)
}

schedule.sort { $0.id < $1.id }


0 commentaires

0
votes

Créer une structure pour contenir les valeurs et mapper votre dictionnaire vers un tableau de cette structure xxx


0 commentaires

0
votes

Vous pouvez le faire de cette façon: Triez-la d'abord à un tableau, puis construisez un tableau avec des éléments de dictionnaire. C'est simple car il n'a que deux codes de lignes. XXX


0 commentaires