我的单元格包含动态元素(2个独立的核心数据实体与一般用户ID连接)。我需要根据一个元素的参数(发送消息的日期)(副标题)对其进行排序。如何访问构造的tableView单元格?
===================
现在我根据我的第一个实体对单元格进行排序,然后根据其userId我从第二个实体添加参数。我想基于第二个实体的参数
对单元格进行排序答案 0 :(得分:1)
您可以创建要用于表的对象数组。然后你可以在之后对数组进行排序。
首先创建一个新的对象类来保存每个项目。 该对象将具有两个实体的属性。
现在直播并获取您的实体并将每个实体对添加到对象中。
获得对象数组后,您可以执行以下操作:
NSArray *sortedArray = [myObjectArray sortedArrayUsingComparator:^(MyObjectClass *a, MyObjectClass *b) {
return [a.myParameter caseInsensitiveCompare:b.myParameter];
}];
当然,您需要在必要时重命名。
答案 1 :(得分:0)
您应该对包含核心数据实体的数组进行排序,然后相应地更新tableView。通过向NSFetchRequest添加NSSortDescriptor对数组进行排序。
答案 2 :(得分:0)
您可以使用NSFetchedResultsController,示例代码为here
一旦有了NSFetchedResultsController,只需将获取的对象插入表视图数据源方法即可,例如:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = <#Get the cell#>;
NSManagedObject *managedObject = [<#Fetched results controller#> objectAtIndexPath:indexPath];
// Configure the cell with data from the managed object.
return cell;
}
希望这会帮助你
它将帮助您在第二个实体的基础上对单元格进行排序:
//设置示例谓词和排序顺序......
NSNumber *minimumSalary = ...;
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"(lastName LIKE[c] 'Worsley') AND (salary > %@)", minimumSalary];
[request setPredicate:predicate];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]
initWithKey:@"firstName" ascending:YES];
[request setSortDescriptors:@[sortDescriptor]];
NSError *error;
NSArray *array = [moc executeFetchRequest:request error:&error];
if (array == nil)
{
// Deal with error...
}
答案 3 :(得分:0)
除了Amos的回答
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lastMessageDate" ascending:NO];
NSArray *sortedArray = [array sortedArrayUsingDescriptors:@[sortDescriptor]];
lastMessageDate - 是类的属性,我需要排序