我尝试做的是使数组等于另一个数组,但是对于特定对象。就像第二个数组包含很多对象一样,我希望第一个数组从第二个数组中获取特定对象,然后在NumberOfRowsInSection中返回它。
这是我尝试的但它什么也没有返回:
-(NSInteger) tableView: (UITableView * ) tableView numberOfRowsInSection: (NSINteger) section {
NSArray *array;
NSString * foundString;
NSInteger i;
for (i = 0; i < [LabelFilesArray count]; i++) {
if ([[[LabelFilesArray objectAtIndex: i] objectForKey: @"teamSide"] isEqualToString: @"test2"]) {
array = [LabelFilesArray objectAtIndex: i] ObjectForKey: @"teamSide"]; //Here is my problem.
foundString = @"found";
if ([foundString isEqualToString: @"found"]) {
break;
}
}
}
return array.count; //it returns nothing
}
答案 0 :(得分:2)
你需要保持简单,所以一旦你得到它就在tableview中选择你想要的数据,并将它存储在第三个数组中。
这允许您删除和重新排列行,并使您的数据源方法简单。
ViewController.m:
@interface ViewController()
{
NSMutableArray *_tableData;
}
- (void)methodThatGetsData
{
// Get data in LabelFilesArray
_tableData = [NSMutableArray new];
for (NSDictionary *dict in LabelFilesArray) {
for (NSString *filter in _filterArray) {
if (dict[@"teamSide"] isEqualToString:filter]) {
[_tableData addObject:dict];
break;
}
}
}
[_tableView reloadData];
}
-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection: (NSINteger)section {
[_tableData count];
}
// etc.
答案 1 :(得分:0)
您也可以使用NSPredicate来过滤数组的内容。
示例:强>
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K = %@", key, [dict objectForKey:key]];
_filterArray = [LabelFilesArray filteredArrayUsingPredicate:predicate];