1

ネストされた配列があり、内部配列内に存在するキーで並べ替えたいと考えています。NSSortDescriptor以下に、または他の方法で並べ替えたい配列を示します。

fares(
{
    pid = 1;
    type1 = (
    {
        color = "red";
        size = "big";
        properties = (
        {
            mod = "auto";
            payment = "EMI";
            moresegs = (
            {
                id = 141;
                name = "abcd";
                duration = "1 year"
            })
        })
    });
    type2 = (
    {
        color = "green";
        size = "small";
        properties = (
        {
            mod = "auto";
            payment = "EMI";
            moresegs = (
            {
                id = 141;
                name = "abcd";
                duration = "1 year"
            })
        })
    })
}

{
    pid = 1;
    type1 = (
    {
        color = "red";
        size = "big";
        properties = (
        {
            mod = "auto";
            payment = "EMI";
            moresegs = (
            {
                id = 141;
                name = "abcd";
                duration = "1 year"
            })
        })
    });
    type2 = (
    {
        color = "green";
        size = "big";
        properties = (
        {
            mod = "auto";
            payment = "EMI";
            moresegs = (
            {
                id = 141;
                name = "abcd";
                duration = "1 year"
            })
        })
    })
})

キー「type2->properties->payment」を使用して配列の上をソートするにはどうすればよいですか?

- - - -アップデート - - - - - -

配列を変更し、NSSortDescriptor を使用して問題を解決しました

4

2 に答える 2

0

このメソッドに運賃配列を入力して、これを試してください-

+(NSArray*)sortedListBySize:(NSArray*)_unsortedList{
    NSArray *sortedListBySize = [_unsortedList sortedArrayUsingComparator:(NSComparator)^(id obj1, id obj2){

        if ([[obj1 valueForKeyPath:@"type2.properties.payments" ] intValue] < [[obj1 valueForKeyPath:@"type2.properties.payments"] intValue]) {
            return NSOrderedAscending;
        } else if ([[obj1 valueForKeyPath:@"type2.properties.payments" ] intValue] > [[obj1 valueForKeyPath:@"type2.properties.payments"] intValue]) {
            return NSOrderedDescending;
        }
        return NSOrderedSame;
    }];
    return sortedListBySize;
}
于 2013-09-26T06:28:47.537 に答える