循环遍历对象数组并添加到数组Array

时间:2014-12-08 10:57:20

标签: ios objective-c nsmutablearray

我有一个包含电影对象的数组。这些对象存储在影片数组中。我的电影对象如下。

Movie.h

NSString * name;
NSString * cat_name;

我想将原始数组添加到具有动态行和部分的UITableView,但我发现它很难。我认为最好的方法是使用一组数组。

例如,会有一个包含所有恐怖电影的数组,一个包含所有小说的数组等。所有在一个数组中。我想这会让我得到所需的最终产品。我发现它很难编码。

编辑数组的内容是动态的,所以我不知道它在启动时会有多少个对象(它是从JSON解析的)。所以我需要动态创建适当数量的部分等。

1 个答案:

答案 0 :(得分:3)

NSMutableDictionary * mainDictionary = [[NSMutableDictionary alloc] init];

Movie * firstHorrorMovie = [[Movie alloc] init];
firstHorrorMovie.name = @"Psycho";
firstHorrorMovie.cat_name = @"Horror";

Movie * secondHorrorMovie = [[Movie alloc] init];
secondHorrorMovie.name = @"Paranormal Activity";
secondHorrorMovie.cat_name = @"Horror";

Movie * comedyMovie = [[Movie alloc] init];
comedyMovie.name = @"The new guy";
comedyMovie.cat_name = @"Comedy";

NSArray * horrorMovies = [NSArray arrayWithObjects:firstHorrorMovie, secondHorrorMovie, nil];
NSArray * comedyMovies = [NSArray arrayWithObjects:comedyMovie, nil];

[mainDictionary setValue:horrorMovies forKey:@"Horror"];
[mainDictionary setValue:comedyMovies forKey:@"Comedy"];

OR(在您的情况下 - 动态)

NSMutableDictionary * anotherMainDictionary = [[NSMutableDictionary alloc] init];

NSArray * array = [NSArray arrayWithObjects:firstHorrorMovie, secondHorrorMovie, comedyMovie, nil];
for (Movie * movie in array) {
    NSMutableArray * array = [anotherMainDictionary valueForKey:movie.cat_name];
    if (array) {
        [array addObject:movie];
        [anotherMainDictionary setValue:array forKey:movie.cat_name];
    } else {
        NSMutableArray * newArray = [NSMutableArray arrayWithObject:movie];
        [anotherMainDictionary setValue:newArray forKey:movie.cat_name];
    }
}