【问题标题】:AFHTTPRequestOperationManager JSON data to ArrayAFHTTPRequestOperationManager JSON 数据到数组
【发布时间】:2014-01-02 17:37:03
【问题描述】:

我正在使用 AFNetworking 2.0 向我的 Web 服务发出返回 JSON 数据的 POST 请求。

{
    post =         {
        "first_name" = Joe;
        "last_name" = Blogs;
        "user_id" = 1;
    };
},
    {
    post =         {
        "first_name" = Bill;
        "last_name" = Gates;
        "user_id" = 2;
    };
}

我能够将 responseObject 打印到显示我的 JSON 数据的控制台。

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"user": @"root"};
[manager POST:@"http://192.168.0.100/webservice.php" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject)
{
    NSString *responseString = [operation responseString];

    NSError *error;
    NSArray *json = [NSJSONSerialization
                     JSONObjectWithData:[responseString dataUsingEncoding:NSUTF8StringEncoding]
                     options:kNilOptions
                     error:&error];

    for (NSDictionary *dictionary in json)
    {
        NSString *firstName = [[dictionary objectForKey:@"post"] valueForKey:@"first_name"];
        NSLog(@"%@", firstName);
        NSString *lastName = [[dictionary objectForKey:@"post"] valueForKey:@"last_name"];
        NSLog(@"%@", lastName);
    }

} failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
    NSLog(@"Error: %@", error);
}];

每个“帖子”都将用于我的视图控制器上的表格单元格。我正在努力理解如何使每个帖子成为数组中的对象。有任何帮助。

【问题讨论】:

    标签: ios objective-c afnetworking


    【解决方案1】:

    更新

    您可以使用这段代码来执行您想要的功能:

            NSString *responseString = [operation responseString];
            NSData *data= [responseString dataUsingEncoding:NSUTF8StringEncoding];
            NSError *error;
            NSArray* results = [NSJSONSerialization JSONObjectWithData:data
                                                           options:0
                                                             error:&error];
                 for (int i=0; i<results.count; i++)
                 {
                     NSDictionary *res=[results objectAtIndex:i];
                     NSDictionary *res2=[res objectForKey:@"post"];
                     [self.storesArray addObject:res2];
    
                 }
                 [self.tableView reloadData];
    

    并在您的 CellForRowAtIndexPath 方法中,使用此代码片段在您的单元格上显示数据:

    NSDictionary *res=[self.storesArray objectAtIndex:indexPath.row];
    cell.firstName.text=[res objectForKey:@"first_name"];
    cell.lastName.text=[res objectForKey:@"last_name"];
    

    这个NSDictionary 以键值对样式工作,因此您只需提及键名即可获取任何键的值并获取该键的值。

    【讨论】:

    • 我添加了 NSMutableArray *storesArray;使用您的代码,我现在收到以下错误 2014-01-02 18:26:00.839 Guestlister[1477:70b] -[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x1094bfc00 2014-01-02 18:26:00.840 Guestlister[1477:70b] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFArray objectForKey:]:无法识别的选择器发送到实例 0x1094bfc00”
    • 不喜欢这一行。 NSArray* 结果 = [responseObject objectForKey:@"post"];
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    相关资源
    最近更新 更多