JSONkitsorting问题

我正在使用基于REST的Web服务来获取数据。 不pipeJSON文档的结构如何,NSDictionary都以相同的方式填充。 我想在Web服务返回时保留sorting。

这是我的代码:

-(void) getData { NSURL *url = [NSURL URLWithString:@"http://somewebservice"]; __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request setCompletionBlock:^{ // Use when fetching text data NSString *responseString = [request responseString]; NSDictionary *resultsDictionary = [responseString objectFromJSONString]; [jokesArray release]; jokesArray = [resultsDictionary allValues]; //always has the same order. [jokesArray retain]; [self.tableView reloadData]; // Use when fetching binary data // NSData *responseData = [request responseData]; }]; [request setFailedBlock:^{ NSError *error = [request error]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"An error occured" message:[error description] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; [alert release]; }]; [request startAsynchronous]; } 

NSDictionary的条目没有固有的顺序; 他们根据定义未sorting。 由allValues返回的数组也是如此,因为文档中明确指出:

数组中的值的顺序没有定义。

之后您将需要对数组进行sorting。 如果要保持JSON源中的sorting顺序,则必须手动parsingJSON数据,并从字典中依次检索值。 或者,如果您知道如何对JSON数据进行sorting,则只需将相同的sortingalgorithm应用于allValues返回的数组。

您不应该使用JSON字典来存储顺序非常重要的东西。 正如http://json.org/所说

一个对象是一组无名的名称/值对。