Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSPredicate排序数组和顺序说明_Objective C_Cocoa Touch_Filter_Nsmutablearray_Nspredicate - Fatal编程技术网

Objective c NSPredicate排序数组和顺序说明

Objective c NSPredicate排序数组和顺序说明,objective-c,cocoa-touch,filter,nsmutablearray,nspredicate,Objective C,Cocoa Touch,Filter,Nsmutablearray,Nspredicate,我有一个NSMutableArray包含TBPosts,我想根据TBPost的commentscont和likecount按降序过滤 最初,过滤数组中的第一个对象将是注释和喜欢数量最多的对象,这可以通过将这两个加在一起计算出来。因此,我尝试了以下查询,并收到一个无法解析的错误。你能告诉我哪里出了问题吗 [posts filterUsingPredicate:[NSPredicate predicateWithFormat:@"post.commentsCount + post.likesCoun

我有一个
NSMutableArray
包含
TBPosts
,我想根据
TBPost
commentscont
likecount
按降序过滤

最初,过滤数组中的第一个对象将是注释和喜欢数量最多的对象,这可以通过将这两个加在一起计算出来。因此,我尝试了以下查询,并收到一个无法解析的错误。你能告诉我哪里出了问题吗

[posts filterUsingPredicate:[NSPredicate predicateWithFormat:@"post.commentsCount + post.likesCount DESC"]];

过滤不是排序。你使用了错误的方法

使用比较器,它将如下所示:

[posts sortUsingComparator:^NSComparisonResult(id p1, id p2) {
    if (p1.commentsCount + p1.likesCount < p2.commentsCount + p2.likesCount)
        return (NSComparisonResult)NSOrderedAscending;
    if (p1.commentsCount + p1.likesCount > p2.commentsCount + p2.likesCount)
        return (NSComparisonResult)NSOrderedDescending;
    return (NSComparisonResult)NSOrderedSame;

}];
[发布排序比较程序:^n比较结果(id p1,id p2){
如果(p1.commentsCount+p1.LikeCountp2.commentsCount+p2.LikeCount)
返回(NSComparisonResult)或撤销;
返回(NSComparisonResult)命令名;
}];

排序描述符是否能够满足我的要求?我只是在检查文档-我通常更喜欢比较器,但sortDescriptor可以。//下面应该可以。无需执行所有情况[posts sortUsingComparator:^n比较结果(id p1,id p2){返回(p1.commentsCount+p1.LikeCount)<(p2.commentsCount+p2.LikeCount);}]@这可能是有害的
nscompariationresult
是一个典型的整数,其值为0f
-1,0,1
,而关系运算符返回
0
1
。因此,您的代码将不包括SensorDeredName案例。对于SensorDeredName,返回哪一个并不重要,这不是吗?就像尝试排序:0,1,2,2,3。。。