Цель C: NSDictionnary Unordered - PullRequest
       8

Цель C: NSDictionnary Unordered

0 голосов
/ 18 февраля 2019

Я получаю от API массив объекта формата json, поэтому я помещаю его в NSDictionnary, проблема в том, что он не в том порядке, в котором получен звук.Как навести порядок?Я попробовал строку кода ниже:

- (void)connectionManagerDidGotPriceList:(NSDictionary *)prices{
NSArray *sortedKeys = [prices.allKeys sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES]]];

NSArray *sortedValues = [prices objectsForKeys:sortedKeys notFoundMarker:@""];

list_categories = sortedKeys;
list = sortedValues;
[priceList reloadData];

}

Но я получаю эту ошибку

Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина:'- [__ NSArrayI floatValue]: нераспознанный селектор, отправленный экземпляру 0x60000399ab20'

Как сохранить тот же порядок, что и звук, полученный в NSDictionnary?

Ответ Json от сервера:

     {
   "status":true,
   "data":{
      "גיהוץ":[
         {
            "PriceListId":9,
            "ItemTypeId":18,
            "JobTypeId":5,
            "price":8.00,
            "LondryId":0,
            "ItemTypeDescription":"חולצה",
            "JobTypeDescription":"גיהוץ",
            "LondryName":""
         },
         {
            "PriceListId":962,
            "ItemTypeId":41,
            "JobTypeId":7,
            "price":40.00,
            "LondryId":0,
            "ItemTypeDescription":"מפה",
            "JobTypeDescription":"כביסה וגיהוץ",
            "LondryName":""
         }
      ],
      "ניקוי יבש":[
         {
            "PriceListId":15,
            "ItemTypeId":18,
            "JobTypeId":6,
            "price":28.00,
            "LondryId":0,
            "ItemTypeDescription":"חולצה",
            "JobTypeDescription":"ניקוי יבש",
            "LondryName":""
         },
         {
            "PriceListId":16,
            "ItemTypeId":19,
            "JobTypeId":6,
            "price":30.00,
            "LondryId":0,
            "ItemTypeDescription":"מכנסים",
            "JobTypeDescription":"ניקוי יבש",
            "LondryName":""
         },
         {
            "PriceListId":835,
            "ItemTypeId":99,
            "JobTypeId":6,
            "price":38.00,
            "LondryId":0,
            "ItemTypeDescription":"סווטשירט",
            "JobTypeDescription":"ניקוי יבש",
            "LondryName":""
         }
      ],
      "כביסה וקיפול":[
         {
            "PriceListId":128,
            "ItemTypeId":22,
            "JobTypeId":8,
            "price":66.00,
            "LondryId":0,
            "ItemTypeDescription":"שק כביסי אחד (עד 6 ק\"ג)",
            "JobTypeDescription":"כביסה וקיפול",
            "LondryName":""
         },
         {
            "PriceListId":956,
            "ItemTypeId":104,
            "JobTypeId":8,
            "price":99.00,
            "LondryId":0,
            "ItemTypeDescription":"שק כביסי אחד (עד 9 ק\"ג)",
            "JobTypeDescription":"כביסה וקיפול",
            "LondryName":""
         }
      ],
      "כביסה עדינה":[
         {
            "PriceListId":855,
            "ItemTypeId":102,
            "JobTypeId":83,
            "price":9.00,
            "LondryId":0,
            "ItemTypeDescription":"כביסה עדינה וייבוש בתליה יח'",
            "JobTypeDescription":"כביסה עדינה",
            "LondryName":""
         }
      ]
   },
   "message":""
}

1 Ответ

0 голосов
/ 18 февраля 2019

Вы можете решить это следующим образом:

NSMutableArray *dataArr = @[].mutableCopy;
for (int i = 0 ; i < data.allKeys.count; i++) {
    NSString *key = data.allKeys[i];
    NSMutableDictionary *dataForKey = [data[key] mutableCopy];
    dataForKey[@"Key"] = key;
    [dataArr addObject:dataForKey];
}

NSSortDescriptor *desc = [NSSortDescriptor sortDescriptorWithKey:@"Key" ascending:YES];
dataArr =[dataArr sortUsingDescriptors:@[desc]];

Вы можете получить данные приведения от вашего json с сервера в NSDictionary, а затем использовать этот цикл, чтобы добавить все элементы в массив и затем отсортировать эти элементы.используя ключ.

...