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。。。