0

我正在尝试构建我的第一个从 Web 服务解析 json 的 iOS 应用程序。

在我的 .h 文件中,我创建了一个数组

NSArray *items;

在我的 .m 文件中,我调用网站并将数据存储到数组中。这一切都很好,除了最终我试图在 uitableview 中显示数据。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"ItemsCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    NSLog(@"%@",items);

    NSDictionary *item = [items objectAtIndex:indexPath.row];
    NSString *title = [item objectForKey:@"title"];

    cell.title.text = title;

    return cell;
}

项目的 nslog 产生:

{
category = code;
keyword = "";
limit = 20;
lowPrice = "";
page = 0;
products =     (
    {
        description = "...";
        mobileFriendly = 1;
        popularity = 2021;
        productId = code;
        title = "title";
    }, and so on...
)

我在尝试执行 NSDictionary *item = [items objectAtIndex:indexPath.row]; 时遇到错误 它说做 objectAtIndex:indexPath.row 是无效的。

我究竟做错了什么?

谢谢你的帮助!

4

2 回答 2

0

items 不是NSArray- 它是NSDictionary. 所以它没有objectAtIndexPath:方法。

于 2012-07-06T19:30:02.313 回答
0

存储的值items是 的实例NSDictionary,但您正在向它发送NSArray消息。此外,您发布的代码无论如何都引用gift并忽略了该项目。

您要查找的数组实际上存储在字典products内的键下items,因此您需要执行以下操作:

NSArray *products = [items objectForKey:@"products"];

NSDictionary *product = [products objectAtIndex:indexPath.row];
// Then use the product, instead of using 'gift' (whatever that is).
NSString *title = [product objectForKey:@"title"];
于 2012-07-06T19:32:25.667 回答