奇怪的NSPredicate行为

奇怪的NSPredicate行为

目前,我有一个表格视图,其中根据视频对象的记录日期填充了视频对象,这些日期是在记录和保存时使用[nsdate date];拍摄的。但是,可以在一天内录制多个视频。我按日期对它们进行排序,当有多个具有相同日期的视频时,它将显示该日期记录的第一个视频,最新的视频按照最新的顺序升序排列。我不确定为什么会发生这种情况,但想检查是否有多个录制日期相同的视频,它按标题组织它们。在SQL中,我可以做类似的事情:

ORDER BY DATE_RECORDED, TITLE ASC

这是我目前正在做的事情:

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
_managedObjectContext = [appDelegate managedObjectContext];

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"whosVideo == %@", _currentPerson];
[request setPredicate:predicate];
NSEntityDescription *eval = [NSEntityDescription entityForName:@"Video" inManagedObjectContext:_managedObjectContext];
[request setEntity:eval];

NSSortDescriptor *sortDescriptor =
[[NSSortDescriptor alloc] initWithKey:@"date_recorded"
                            ascending:NO
                             selector:@selector(localizedCaseInsensitiveCompare:)];
NSArray *sortDescriptors = [[NSArray alloc]initWithObjects:sortDescriptor, nil];


[request setSortDescriptors:sortDescriptors];

NSError *error = nil;
NSMutableArray *mutableFetchResults = [[_managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults == nil){
    //handle error
}

[self setVideoArray:mutableFetchResults];
[self.tableView reloadData];


如果在同一日期记录了多个对象,我该如何处理添加第二个谓词?

最佳答案

如果您要处理多个谓词,而不必使用NSCompoundPredicate,请尝试以下操作:-

NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"whosVideo == %@", _currentPerson];

NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"whosVideo == %@", _someOther];

  NSArray *subPredicates = [[NSArray alloc] initWithObjects:predicate1, predicate2,nil];

NSPredicate *predicate = [NSCompoundPredicate orPredicateWithSubpredicates:subPredicates];

关于ios - 奇怪的NSPredicate行为?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19171819/

10-12 14:45