我有一个包含电影对象的数组。这些对象存储在影片数组中。我的电影对象如下。
Movie.h
NSString * name;
NSString * cat_name;
我想将原始数组添加到具有动态行和部分的UITableView
,但我发现它很难。我认为最好的方法是使用一组数组。
例如,会有一个包含所有恐怖电影的数组,一个包含所有小说的数组等。所有在一个数组中。我想这会让我得到所需的最终产品。我发现它很难编码。
编辑数组的内容是动态的,所以我不知道它在启动时会有多少个对象(它是从JSON解析的)。所以我需要动态创建适当数量的部分等。
答案 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];
}
}