4

我有一本像<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" 属性对这本字典进行排序。

我怎样才能做到这一点?请帮我!

4

3 回答 3

10

如果Loto是一个具有hafta属性的对象,您可以通过将字典传递给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]

于 2015-05-04T12:51:01.680 回答
3

字典没有排序。您需要将其转换为数组,然后对其进行排序。所以像这样。

let lotoArray = lotoDictionary.allObjects as [Loto]

lotoArray.sort { $0.hafta < $1.hafta }
于 2015-05-04T12:03:13.750 回答
1

你不能。字典的键没有排序。您可以获得一个值数组并对该数组进行排序。

于 2015-05-04T12:00:24.003 回答