gpt4 book ai didi

iphone - 使用 NSSortDescriptor 时,您可以使用 NSPredicate 将获取的项目放在所有其他项目之前吗

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:35 24 4
gpt4 key购买 nike

我正在从我的数据存储中拉出与给定 User 匹配的已排序 Friend 对象,作为驱动 NSFetchedResultsController 的一部分>UICollectionView如下图;

- (NSFetchedResultsController *)fetchedFriendsResultsController
{
if (_fetchedFriendsResultsController != nil) {
return _fetchedFriendsResultsController;
}

//Get the correct array of friends for that user
NSFetchRequest *fetchRequestItems = [[NSFetchRequest alloc] init];
NSEntityDescription *entityItem = [NSEntityDescription entityForName:@"Friend" inManagedObjectContext:self.managedObjectContext];
[fetchRequestItems setEntity:entityItem];

User* myUser = [DataBaseManager getCurrentUser:managedObjectContext];
[fetchRequestItems setPredicate:[NSPredicate predicateWithFormat:@"user == %@", myUser]];

//Sort by name descending
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
[fetchRequestItems setSortDescriptors:sortDescriptors];

NSFetchedResultsController *fetchedItemsResultsController =[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequestItems managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];

_fetchedFriendsResultsController = fetchedItemsResultsController;

return _fetchedFriendsResultsController;
}

这很好用,所有 friend 都按字母降序排列。

现在我想获取一个特定的 friend 对象,其名称在优先顺序中不是按字母顺序排在第一位,并将它们放在返回的所有其他 friend 项目之前。为他们做一个特例,其中 'name' == @"SPECIFIC_NAME"。

我是否需要将这种边缘情况添加到排序描述符或谓词中?你会怎么做?

谢谢

最佳答案

听起来您需要进一步的 attribute 和进一步的 sortDescriptor

如果这个 friend 很特别,用 isSpecial 这样的属性显示它并添加为第一个 sortDescriptor

NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"isSpecial" ascending:YES];
NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];

NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor1, sortDescriptor2, nil];
[fetchRequestItems setSortDescriptors:sortDescriptors];

关于iphone - 使用 NSSortDescriptor 时,您可以使用 NSPredicate 将获取的项目放在所有其他项目之前吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16915940/

24 4 0