簡體   English   中英

Swift按對象值的屬性對字典進行排序

[英]Swift Sort Dictionary by property of an object value

我有一個字典,如<String,Loto> ,Loto是下面的對象;

Loto:   
 {
    "success": true,
    "data": {
    "oid": "64kbbqi8dbxygb00",
    "hafta": 961,
    "buyukIkramiyeKazananIl": "",
    "cekilisTarihi": "11/04/2015",
    "cekilisTuru": "SAYISAL_LOTO",
    "rakamlar": "03#02#48#16#15#08",
    "rakamlarNumaraSirasi": "02 - 03 - 08 - 15 - 16 - 48",
    "devretti": false,
    "devirSayisi": 0,
    "bilenKisiler": [
    {
    "oid": "64kbbxi8dbxyg403",
    "kisiBasinaDusenIkramiye": 7.35,
    "kisiSayisi": 185712,
    "tur": "$3_BILEN"
    },
    {
    "oid": "64kbbxi8dbxyg402",
    "kisiBasinaDusenIkramiye": 53.05,
    "kisiSayisi": 9146,
    "tur": "$4_BILEN"
    },
    {
    "oid": "64kbbxi8dbxyg401",
    "kisiBasinaDusenIkramiye": 4532.2,
    "kisiSayisi": 142,
    "tur": "$5_BILEN"
    },
    {
    "oid": "64kbbxi8dbxyg400",
    "kisiBasinaDusenIkramiye": 1528438.75,
    "kisiSayisi": 1,
    "tur": "$6_BILEN"
    }
    ],
    "buyukIkrKazananIlIlceler": [
    {
    "il": "10",
    "ilView": "BALIKESÄ°R",
    "ilce": "01001",
    "ilceView": "AYVALIK"
    }
    ],
    "kibrisHasilati": 51127,
    "devirTutari": 0.09,
    "kolonSayisi": 10537872,
    "kdv": 1599672.97,
    "toplamHasilat": 10537872,
    "hasilat": 8938199.03,
    "sov": 893819.9,
    "ikramiyeEH": 8044379.129999999,
    "buyukIkramiye": 1528432.03,
    "haftayaDevredenTutar": 0
    }
    }

所以我的字典像<“11042015”,Loto>,我想通過loto對象的“hafta”屬性對這本詞典進行排序。

我怎樣才能做到這一點? 請幫我!

如果Loto是一個具有hafta屬性的對象,您可以通過將字典傳遞給sorted函數以及一個告訴它如何對條目sorted的閉包來對字典進行sorted

sorted(dict) { $0.1.hafta < $1.1.hafta }

$0.1$1.1因為詞典表示為一系列鍵/值對 - 您希望按值的屬性排序,即元組條目1

注意,這將返回一個排序數組,類型為[(String,Loto)]對,而不是字典(因為Swift字典是無序的)。

(如果Loto不是真正的對象而是另一個字典,你可能需要{$0.1["hafta"] < $1.1["hafta"]} - 這實際上取決於你如何保存你的數據 - 好消息是你不需要擔心選項,因為它們可以與< )進行比較

如果您不需要密鑰,只需對值進行排序:

sorted(dict.values) { $0.hafta < $1.hafta }

這會給你一個類型為[Loto]的排序數組

字典不是訂購的。 你需要的是將它轉換為數組,然后對其進行排序。 所以這樣的事情。

let lotoArray = lotoDictionary.allObjects as [Loto]

lotoArray.sort { $0.hafta < $1.hafta }

你不能。 字典的鍵沒有排序。 您可以獲取值的數組並對該數組進行排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM