用 NSDictionary 填充数组

Filling an array with NSDictionary

我有 NSDictionary 从 JSON 获取数据,现在我想管理该数据并填充 tableView。然而,我面临着意想不到的障碍。我的观点是——创建一个具有适当值的数组和方法(图像数组、文本值数组等)。目前我正在使用 AFNetworking。在一种方法中,我得到 JSON 数据:

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

self.dataDict = (NSDictionary*)responseObject;

为了尝试创建清晰的代码,我想按功能分隔其他方法。我试过了:

-(void)setImageView{
    if (self.dataDict){
self.dataDictArray  = [[self.dataDict valueForKey:@"id"] objectAtIndex:0];

然后,当我想使用 NSLog 时,我会执行以下操作:

NSLog(@"Check the array %@", [self.dataDictArray objectAtIndex:0]);

它给我一个错误:*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber objectAtIndex:]: unrecognized selector sent to instance

很明显,这意味着我的数组中索引 0 处没有对象。但是当我这样做的时候:

NSLog(@"Check the array %@", self.dataDictArray);

它在控制台中显示我的数组填充了单个 "id" 数字 3,这实际上是 NSDictionary 中的第一个 ID。

我想了解如何更正包含来自 NSDictionary 的数据的正确数组以及我做错了什么?

响应对象。看起来像这样:

(
        {
        id = 3;
        dog = "\U041a\U0430\U043a\U043e\U0439-\U0442\U043e \U043c\U0443\U0434\U0430\U043a \U043d\U0430\U043a\U0440\U0443\U0442\U0438\U043b";
        image = "cute_dog/116.jpg";
        score = 586;
    },
        {
        id = 115;
        dog = "\U0422\U0430\U043d\U044f \U041a\U043b\U044e\U043a\U0432\U0438\U043d\U0430";
        image = "cute_dog/115.jpg";
        score = 481;
    },

等等

谢谢!

通常按照你说的 Array of Dictionaries。所以你应该按照这些步骤来获取数据。

Step 1.

self.dataDictArray = (NSArray*)responseObject;

Step 2.

self.dataDict=[self.dataDictArray objectAtIndex:0];

Step 3.

NSLog(@"ID = %@",[self.dataDict valueForKey:@"id"]);

简单。

干杯。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber objectAtIndex:]: unrecognized selector sent to instance

Obviously, it means that there is no object at index 0 in my array

你对错误的理解是错误的。 索引0处的对象,它不是NSDictionary实例,而是NSNumber(你提到的数字3)。 NSNumber 没有名为 objectAtIndex: 的方法,所以这是错误的原因。

检查你的 JSON 解析,你可能在那里做错了。