以升序目标对多维NSMutableArray进行排序-C

用户名

我正在尝试使用键@“ Channel”以升序对NSMutableArray(带有字典对象)进行排序(有多个通道条目,为了便于阅读,我已将其缩短了):

我试图使用排序:

NSSortDescriptor *channelDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"Channel" ascending:YES selector:@selector(compare:)];
NSArray *descriptors = @[channelDescriptor];
[self.tempArrayDuplicateDataForAppWatch sortUsingDescriptors:descriptors];

数据:

{
    Airings =     (
                {
            AiringTime = "2015-08-24T19:00:00Z";
            AiringType = Unknown;
            CC = 1;
            Category = Movie;
            Color = Color;
            DSS = 0;
            DVS = 0;
            Dolby = 0;
            Duration = 120;
            HD = 0;
            HDLevel = "HD Level Unknown";
            LetterBox = 0;
            MovieRating = R;
            ProgramId = 20306212;
            SAP = 0;
            Sports = 0;
            Stereo = 1;
            Subcategory = horror;
            TVRating = "TV-MA";
            Title = Chernobyl;
        }
    );
    CallLetters = Syfy;
    Channel = 151;
    ChannelImages =     (
                {
            AspectRatio = "109:79";
            ImageCaption = "Source logo";
            ImageCredit = Syfy;
            ImageCreditDisplay = false;
            ImageExpiryDateTime = "<null>";
            ImageFormat = jpg;
            ImageFormatId = 144;
            ImageHorizontalResolution = 720;
            ImageId = 74975320;
            ImageOwner = Syfy;
            ImageTitle = Syfy;
            ImageType = "Station Logo";
            ImageUrl = ;
            ImageVerticalResolution = 521;
            LastUpdate = "2014-07-11T22:05:13Z";
            ObjectId = 1232;
            ObjectName = "Syfy (East)";
            ObjectType = Source;
            ParentImageId = 16795667;
        }
    );
    ChannelSchedules =     (
    );
    DisplayName = Syfy;
    IconAvailable = 0;
    IsChannelOverride = 0;
    Order = 1510647;
    ParentNetworkId = 0;
    ServiceId = 82368;
    SourceAttributeTypes = "";
    SourceAttributes = 0;
    SourceId = 1232;
    SourceLongName = "Syfy (East)";
    SourceType = Basic;
    Type = "24-Hours";
},
{
    Airings =     (
                {
            AiringTime = "2015-08-24T19:00:00Z";
            AiringType = Repeat;
            CC = 1;
            Category = Other;
            Color = Color;
            DSS = 0;
            DVS = 0;
            Dolby = 0;
            Duration = 30;
            HD = 0;
            HDLevel = "HD Level Unknown";
            LetterBox = 0;
            ProgramId = 26463608;
            SAP = 0;
            SeriesId = 24828094;
            Sports = 0;
            Stereo = 1;
            Subcategory = "game show";
            TVRating = None;
            Title = "Celebrity Game";
        },
                {
            AiringTime = "2015-08-24T19:30:00Z";
            AiringType = Repeat;
            CC = 1;
            Category = Other;
            Color = Color;
            DSS = 0;
            DVS = 0;
            Dolby = 0;
            Duration = 30;
            HD = 0;
            HDLevel = "HD Level Unknown";
            LetterBox = 0;
            ProgramId = 26332661;
            SAP = 0;
            SeriesId = 24828094;
            Sports = 0;
            Stereo = 1;
            Subcategory = "game show";
            TVRating = None;
            Title = "Celebrity Game";
        },
                {
            AiringTime = "2015-08-24T20:00:00Z";
            AiringType = Repeat;
            CC = 1;
            Category = Other;
            Color = Color;
            DSS = 0;
            DVS = 0;
            Dolby = 0;
            Duration = 30;
            HD = 0;
            HDLevel = "HD Level Unknown";
            LetterBox = 0;
            ProgramId = 1055967;
            SAP = 0;
            Sports = 0;
            Stereo = 0;
            Subcategory = "game show";
            TVRating = "TV-PG";
            Title = "Family Feud";
        },
                {
            AiringTime = "2015-08-24T20:30:00Z";
            AiringType = Repeat;
            CC = 1;
            Category = Other;
            Color = Color;
            DSS = 0;
            DVS = 0;
            Dolby = 0;
            Duration = 30;
            HD = 0;
            HDLevel = "HD Level Unknown";
            LetterBox = 0;
            ProgramId = 1055967;
            SAP = 0;
            Sports = 0;
            Stereo = 0;
            Subcategory = "game show";
            TVRating = "TV-PG";
            Title = "Family Feud";
        }
    );
    CallLetters = WDAF;
    Channel = 4;
    ChannelImages =     (
                {
            AspectRatio = "23:9";
            ImageCaption = "92x36;darklight";
            ImageCreditDisplay = false;
            ImageExpiryDateTime = "<null>";
            ImageFormat = jpg;
            ImageFormatId = 97;
            ImageHorizontalResolution = 800;
            ImageId = 4065300;
            ImageTitle = FOX;
            ImageType = "Station Logo";
            ImageUrl = ;
            ImageVerticalResolution = 313;
            LastUpdate = "2015-06-22T16:50:52Z";
            ObjectId = 134;
            ObjectName = WDAF;
            ObjectType = Source;
            ParentImageId = 16814381;
        }
    );
    ChannelSchedules =     (
    );
    DisplayName = WDAF;
    IconAvailable = 1;
    IsChannelOverride = 0;
    Order = 40002;
    ParentNetworkId = 3;
    ServiceId = 82368;
    SourceAttributeTypes = "";
    SourceAttributes = 0;
    SourceId = 134;
    SourceLongName = WDAF;
    SourceType = Broadcast;
    Type = "24-Hours";
}

我意识到@“ Channel”值是字符串格式,并且我不能使用“ compare:”我想知道是否有更好的方法。我非常感谢您的帮助!

用户名

再次感谢您的帮助和建议。我终于弄清楚了为什么NSSortDescriptor无法正常工作。@“ Channel”的值是一个字符串,因此排序无法正常进行。我必须一个一个地从NSMutableArray中提取每个词典,并将@“ Channel”的值更改为NSNumber / NSDecimalNumber,然后用新值替换旧的字符串值。然后,我用NSSortDescriptor进行了排序,并且它起作用了。

这是示例代码:

for (int i=0; i<[unsortedNSMutableArray count]; i++)
    {
        NSMutableDictionary *tempChannelInfo = [[NSMutableDictionary alloc] init];
        tempChannelInfo = unsortedNSMutableArray[i];
        NSString *tempChannelString = tempChannelInfo[@"Channel"];
        NSNumber *convertedChannel = [NSDecimalNumber decimalNumberWithString:tempChannelString];
        [tempChannelInfo setObject:convertedChannel forKey:@"Channel"];
        [unsortedNSMutableArray replaceObjectAtIndex:i withObject:tempChannelInfo];
    }

然后我排序:

NSSortDescriptor *channelDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"Channel" ascending:YES selector:@selector(compare:)];
    NSArray *descriptors = @[channelDescriptor];
    [unsortedNSMutableArray sortUsingDescriptors:descriptors];

再次感谢您的所有帮助和建议!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C中按升序对链表进行排序

来自分类Dev

根据目标c中内部数组的总和对多维数组进行排序

来自分类Dev

我想在C中以行为基础(升序)对矩阵进行排序

来自分类Dev

如何按升序或降序对 IList 进行排序 Selenium C#

来自分类Dev

使用C中的指针按升序对数组进行排序

来自分类Dev

如何在C / C ++中对多维数组进行排序

来自分类Dev

在Objective-C中对NSArray和NSMutableArray进行排序

来自分类Dev

在Objective-C中对NSArray和NSMutableArray进行排序

来自分类Dev

在C#多维列表中对行进行排序和删除

来自分类Dev

按字典顺序对C ++中的多维向量进行排序

来自分类Dev

在C#多维列表中对行进行排序和删除

来自分类Dev

在目标C中返回NSMutableArray

来自分类Dev

如何按降序/升序对“ uniq -c”进行自然排序输出?-Unix

来自分类Dev

C ++在文本文件中按升序对数字进行排序

来自分类Dev

以升序对数组进行排序,并删除Objective-C中的重复值

来自分类Dev

在Asp.net C#中使用linq按升序和降序对list <object>进行排序

来自分类Dev

c#按升序排序组合列表

来自分类Dev

C ++排序(升序,降序)整数数组

来自分类Dev

在C#中按其第一个元素的升序对2D数组行进行排序

来自分类Dev

我想在没有任何函数的情况下在 C# 中按升序对矩阵进行排序

来自分类Dev

jQueryUI可排序目标元素ID

来自分类Dev

合并目标C中的排序

来自分类Dev

以升序对arraylist进行排序

来自分类Dev

更改目标c中多维数组的值?

来自分类Dev

冒泡排序C中的降序和升序不会排序

来自分类Dev

冒泡排序C中的降序和升序将不排序

来自分类Dev

在C ++ 11中使用std :: sort和lambda函数对动态分配的多维C数组进行排序

来自分类Dev

在C ++ 11中使用std :: sort和lambda函数对动态分配的多维C数组进行排序

来自分类Dev

按特定键的值对多维关联数组的值进行升序排序

Related 相关文章

  1. 1

    在C中按升序对链表进行排序

  2. 2

    根据目标c中内部数组的总和对多维数组进行排序

  3. 3

    我想在C中以行为基础(升序)对矩阵进行排序

  4. 4

    如何按升序或降序对 IList 进行排序 Selenium C#

  5. 5

    使用C中的指针按升序对数组进行排序

  6. 6

    如何在C / C ++中对多维数组进行排序

  7. 7

    在Objective-C中对NSArray和NSMutableArray进行排序

  8. 8

    在Objective-C中对NSArray和NSMutableArray进行排序

  9. 9

    在C#多维列表中对行进行排序和删除

  10. 10

    按字典顺序对C ++中的多维向量进行排序

  11. 11

    在C#多维列表中对行进行排序和删除

  12. 12

    在目标C中返回NSMutableArray

  13. 13

    如何按降序/升序对“ uniq -c”进行自然排序输出?-Unix

  14. 14

    C ++在文本文件中按升序对数字进行排序

  15. 15

    以升序对数组进行排序,并删除Objective-C中的重复值

  16. 16

    在Asp.net C#中使用linq按升序和降序对list <object>进行排序

  17. 17

    c#按升序排序组合列表

  18. 18

    C ++排序(升序,降序)整数数组

  19. 19

    在C#中按其第一个元素的升序对2D数组行进行排序

  20. 20

    我想在没有任何函数的情况下在 C# 中按升序对矩阵进行排序

  21. 21

    jQueryUI可排序目标元素ID

  22. 22

    合并目标C中的排序

  23. 23

    以升序对arraylist进行排序

  24. 24

    更改目标c中多维数组的值?

  25. 25

    冒泡排序C中的降序和升序不会排序

  26. 26

    冒泡排序C中的降序和升序将不排序

  27. 27

    在C ++ 11中使用std :: sort和lambda函数对动态分配的多维C数组进行排序

  28. 28

    在C ++ 11中使用std :: sort和lambda函数对动态分配的多维C数组进行排序

  29. 29

    按特定键的值对多维关联数组的值进行升序排序

热门标签

归档