0

我正在使用基于 REST 的 Web 服务来获取数据。无论 JSON 文档的结构如何,NSDictionary 都会以相同的方式填充。我希望在 Web 服务返回时保留排序。

这是我的代码:

-(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];
}
4

2 回答 2

2

an 中的条目NSDictionary没有固有的顺序;它们没有按定义排序。由 返回的数组也是如此allValues,正如文档中明确指出的那样:

未定义数组中值的顺序。

之后您需要对数组进行排序。如果要保持与 JSON 源中相同的排序顺序,则必须手动解析 JSON 数据并从字典中一个接一个地检索值。或者,如果您知道 JSON 数据是如何排序的,只需将相同的排序算法应用于allValues.

于 2011-10-30T19:31:05.563 回答
1

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

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

于 2012-05-04T21:23:34.757 回答