Как создать NSDictionary в NSMutableArray в iPhone? - PullRequest
0 голосов
/ 31 января 2011

У меня есть один NSMutableDictionary, и он содержит информацию о пользователе. Я использовал синтаксический анализ и получить данные из MutableDictionary.

feedDictionary есть, {

"city = New York",
"phone = 111111",
"email = aaa@test.com",
"year = 1986",
"degree = Undergraduate"

}

Я добавил все значение в FeedArray, и я хочу создать два словаря для FeedArray. Потому что я отобразил данные в виде таблицы разделов. таким образом, данные раздела таблицы - Раздел-1 - [город, телефон, электронная почта] и Раздел-2- [год, степень]. Потому что, если кто-либо из данных равен нулю, я не должен удалять эти конкретные строки в этом разделе. так что я хочу проверить данные, независимо от того, являются ли данные нулевыми или нет.

Edit:

Прежде чем я добавлю в FeedArray, я хочу проверить, является ли строка нулевой или нет. Если строка равна нулю, тогда я не должен добавлять массив, а если данные не равны нулю, то только добавляется в FeedArray.

[self isEmpty:[feedDictionary valueForKey:@"city"]]?:[feedArray addObject:[feedDictionary valueForKey:@"city"]]; //section1

[self isEmpty:[feedDictionary valueForKey:@"phone"]]?:[feedArray addObject:[feedDictionary valueForKey:@"phone"]]; //section1

[self isEmpty:[feedDictionary valueForKey:@"email"]]?:[feedArray addObject:[feedDictionary valueForKey:@"email"]]; //section1

[self isEmpty:[feedDictionary valueForKey:@"year"]]?:[feedArray addObject:[feedDictionary valueForKey:@"year"]]; //section2

[self isEmpty:[feedDictionary valueForKey:@"degree"]]?:[feedArray addObject:[feedDictionary valueForKey:@"degree"]]; //section2

 -(BOOL) isEmpty :(NSString*)str{
      if(str == nil || [[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] == 0)
    return YES;
return NO;

}

Ожидаемый результат:

Мой массив 5 (

section1{
"city = New York",
"phone = 111111",
"email = aaa@test.com",
}
 section2
{

"year = 1986",
"degree = Undergraduate"e"
}

) Итак, как я могу создать словарь для изменяемого массива. Поэтому, пожалуйста, ведите меня.

Спасибо!

1 Ответ

2 голосов
/ 31 января 2011
NSArray *section0Keys = [NSArray arrayWithObjects:@"city", @"phone", @"email", nil];
NSMutableArray *section0 = [[[feedDictionary objectsForKeys:section0Keys notFoundMarker:[NSNull null]] mutableCopy] autorelease];
if ([section0 indexOfObject:[NSNull null]] != NSNotFound) {
    isValid = NO;
}
// you don't need this if you don't care for invalid arrays.
[section0 removeObjectsInArray:[NSArray arrayWithObject:[NSNull null]]];

NSArray *section1Keys = [NSArray arrayWithObjects:@"year", @"degree", nil];
NSMutableArray *section1 = [[[feedDictionary objectsForKeys:section1Keys notFoundMarker:[NSNull null]] mutableCopy] autorelease];
if ([section1 indexOfObject:[NSNull null]] != NSNotFound) {
    isValid = NO;
}
[section1 removeObjectsInArray:[NSArray arrayWithObject:[NSNull null]]];

self.dataArray = [NSArray arrayWithObjects:
section0,
section1,
nil];

ваши методы источника данных UITableView:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [self.dataArray count];
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [[self.dataArray objectAtIndex:section] count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    /.../
    cell.textLabel.text = [[self.dataArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
    return cell;
}

Редактировать: я думаю, я неправильно понял ваш отредактированный вопросВаш код выглядит хорошо с первого взгляда.

...