ios - ios sortedArrayUsingComparator但始终在开头保留一些值

标签 ios objective-c arrays

我正在排序这样的数组:

NSArray *temp = [array sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
    int first = [[a valueForKey:@"id"] intValue];
    int second = [[b valueForKey:@"id"]intValue];
    if (first > second) return NSOrderedAscending;
    if (first < second) return NSOrderedDescending;
    return NSOrderedSame;
}];
return [temp mutableCopy];

可以正常工作,但是现在我想添加检查以查看例如a的key值是否等于某个值,无论“id”值是什么,始终将其保持在数组的顶部。是否可以使用比较器执行此操作?

最佳答案

假设您的特定值为5,然后将代码更改为

NSArray *temp = [array sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
    int first = [[a valueForKey:@"id"] intValue];
    int second = [[b valueForKey:@"id"] intValue];
    int foo = [[a valueForKey:@"foo"] intValue]; // get foo

    if (foo == 5) return NSOrderedAscending;    // send foo to the top/bottom
    if (first > second) return NSOrderedAscending;
    if (first < second) return NSOrderedDescending;
    return NSOrderedSame;
}];
return [temp mutableCopy];

关于ios - ios sortedArrayUsingComparator但始终在开头保留一些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24040831/

相关文章:

iphone - 调用按钮操作时 EXC_BAD_ACCESS(代码 = 2 或代码 1)

ios - NSURLErrorDomain 错误码1002说明

objective-c - 将 Objective-C 类转换为 Swift 时更改数组中的类型

iphone - 导航 Controller 堆栈,一次推送 2 个 View 。所以你可以从 VController1 直接跳到 VController3

ios - NSDate 因连续操作而崩溃

php - 自定义排序数组

c++ - 如何使用 for-each 循环扫描 int 数组对象?

c - 通过使用一系列指针从结构访问字符串

objective-c - EXC_BAD_ACCESS 错误使用 ALAssetsLibrary assetForURL :resultBlock:failureBlock:

php - 如何通过IOS MSDK2.x从paypal获取payer id?