Ios 那么您有一个崩溃日志吗?错误消息是明确的,并用JSON结构确认:您的JSON是顶级的NSDictionary,而不是数组。您的self.contesticArray是NSDictionary而不是NSArray,因此您必须使用NSDictionary*数组

Ios 那么您有一个崩溃日志吗?错误消息是明确的,并用JSON结构确认:您的JSON是顶级的NSDictionary,而不是数组。您的self.contesticArray是NSDictionary而不是NSArray,因此您必须使用NSDictionary*数组,ios,objective-c,json,crash,Ios,Objective C,Json,Crash,那么您有一个崩溃日志吗?错误消息是明确的,并用JSON结构确认:您的JSON是顶级的NSDictionary,而不是数组。您的self.contesticArray是NSDictionary而不是NSArray,因此您必须使用NSDictionary*数组=[self.contesticArray objectForKey:“key”]进行访问;使用NSLog(@“%@”,self.contestArray)查看self的键和值。contestArray@ReinierMelian///work



那么您有一个崩溃日志吗?错误消息是明确的,并用JSON结构确认:您的JSON是顶级的NSDictionary,而不是数组。您的self.contesticArray是NSDictionary而不是NSArray,因此您必须使用NSDictionary*数组=[self.contesticArray objectForKey:“key”]进行访问;使用NSLog(@“%@”,self.contestArray)查看self的键和值。contestArray@ReinierMelian///work///NSDictionary*array=[self.competicsarray valueForKey:@“Concours-1”];///不起作用(我需要那个)/////NSDictionary*array2=[self.competingarray objectAtIndex:indexPath.row];事实上,您检索到的词典中没有任何数组。我们如何做到这一点?Thanks@victorbill我添加了更多信息。@sleepwalkerfx“Concours-1”和“Concours-2”是分开的对象,而不是内部对象值。。。这些是主要的object@victorbill检查我的答案,它将帮助你100%没有任何变化的响应json。快乐编码:)@ParvendraSingh我本可以提供相同的解决方案,但这是一种非常糟糕的做法和设计,这将在将来导致更多的困难。因为他将数据源用于集合视图,所以正确的方法是在可行的情况下将JSON模式更改为数组格式,而不是在以后出现更严重的问题。字典不是有序的数据结构,所以这是他在处理代码时必须处理的另一个陷阱。那么我们该怎么做呢?Thanks@victorbill我添加了更多信息。@sleepwalkerfx“Concours-1”和“Concours-2”是分开的对象,而不是内部对象值。。。这些是主要的object@victorbill检查我的答案,它将帮助你100%没有任何变化的响应json。快乐编码:)@ParvendraSingh我本可以提供相同的解决方案,但这是一种非常糟糕的做法和设计,这将在将来导致更多的困难。因为他将数据源用于集合视图,所以正确的方法是在可行的情况下将JSON模式更改为数组格式,而不是在以后出现更严重的问题。字典不是有序的数据结构,因此这是他在处理代码时必须处理的另一个陷阱。@victorbill试试这个,它肯定能解决你的问题。@victorbill试试这个,它肯定能解决你的问题。
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    [manager GET:@"https://jojol-concours-lists.firebaseio.com/.json" parameters:URLParameters progress:nil success:^(NSURLSessionTask *task, id responseObject) {

        self.contestArray = responseObject;

        [_collectionView reloadData];
    } failure:^(NSURLSessionTask *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return [self.contestArray count];
}
    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
                      cellForItemAtIndexPath:(NSIndexPath *)indexPath {

        DemoCollectionViewCell *retVal = [collectionView dequeueReusableCellWithReuseIdentifier:@"collectionViewCell"
                                                                                   forIndexPath:indexPath];

//////// Not work ///////
        NSDictionary *array = [self.contestArray objectAtIndex:indexPath.row];
//////// Not work ///////

        retVal.name.text = @"";

        retVal.contentView.layer.cornerRadius = 10;
        retVal.contentView.layer.masksToBounds = YES;

        return retVal;
    }
{
  "Concours-1" : {
    "Description" : "Description du concours",
    "Title" : "Titre"
  },
  "Concours-2" : {
    "Description" : "Description du concours",
    "Titre" : "iPhone 6"
  }
}
[{
    "Concours": 1,
    "Description": "Description du concours",
    "Title": "Titre"
}, {
    "Concours": 2,
    "Description": "Description du concours",
    "Titre": "iPhone 6"
}]
{
  "Concours-1" : {
    "Description" : "Description du concours",
    "Title" : "Titre"
  },
  "Concours-2" : {
    "Description" : "Description du concours",
    "Titre" : "iPhone 6"
  }
}
[
  {
    "Description": "Description du concours",
    "Title": "Titre"
  },
  {
    "Description": "Description du concours",
    "Titre": "iPhone 6"
  }
]
NSDictionary *jsonDict =responseObject;

NSArray *allKeys = [jsonDict allKeys];
NSMutableArray *allDataArray = [NSMutableArray new];
for (int x = 0; x<allKeys.count; x++) {
    NSString *key = [allKeys objectAtIndex:x];
    [allDataArray addObject:[jsonDict valueForKey:key]];

    // then reload your collection on allDataArray
}