ios - Spika-iOS : "incompatible block pointer types"

标签 ios xcode nsarray

我已经下载了适用于 iOS 和 Android 的“Spika”脚本,但遇到了以下问题。尝试编译时出现以下错误:

Incompatible block pointer types sending 'int (^)(ModelMessage *__strong, ModelMessage *__strong)' to parameter of type 'NSComparator' (aka 'NSComparisonResult (^)(__strong id, __strong id)')

我尝试通过将其更改为 NSComparisonResult 来解决该问题,但似乎无法弄清楚问题所在。

这是代码:

NSMutableArray *removeTarget = [[NSMutableArray alloc] init];

for(int i = 0; i < [result count] ; i++){

    ModelMessage *message = [result objectAtIndex:i];

    if(message.valid == NO)
        [removeTarget addObject:message];

}

for(int ii = 0; ii < [removeTarget count] ; ii++){
    [result removeObject:[removeTarget objectAtIndex:ii]];
}

NSArray *sortedAry = [result sortedArrayUsingComparator:^(ModelMessage *a, ModelMessage *b) {
    return a.modified> b.modified;
}];

int fetchNum = PagingMessageFetchNum;
if(fetchNum > sortedAry.count)
    fetchNum = sortedAry.count;

return sortedAry;

//return [sortedAry subarrayWithRange:NSMakeRange(0, fetchNum)];
}

问题在于:

NSArray *sortedAry = [result sortedArrayUsingComparator:^(ModelMessage *a, ModelMessage *b) {
    return a.modified> b.modified;

任何帮助将不胜感激。谢谢大家。

最佳答案

您不应返回上面代码中那样的 BOOL 结果。 结果必须是 NSComparisonResult 类型,即枚举

enum {
  NSOrderedAscending = -1,
  NSOrderedSame,
  NSOrderedDescending
};

在您的情况下,排序 block 应该看起来像这样

NSArray *sortedAry = [result sortedArrayUsingComparator:^(ModelMessage *a, ModelMessage *b) {
    if(a.modified<b.modified)
        return NSOrderedAscending;
    else if(a.modified>b.modified)
        return NSOrderedDescending;
    else 
        return NSOrderedSame;
}];

关于ios - Spika-iOS : "incompatible block pointer types",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26051244/

相关文章:

ios - 是否可以在 iOS 10 设备上安装 flutter-applications

ios - NSZombie 已启用但仍然没有调试信息

ios - 在未排序的子节点上运行操作

objective-c - 更改对不同对象的引用而不更改最初引用的对象?

iphone - NSArray 和 NSMutableArray 的区别

ios - CGImageRef的NSArray存在问题(但不是在模拟器上!)

ios - Xcode 6 + iOS 8 SDK 但部署在 iOS 7 (UIWebKit & WKWebKit)

ios - 在一个按钮中使用 segue 和 IBAction

xcode - 如何仅为控制台在 Xcode 中启用换行?

ios - NSPredicate - 包含未按预期运行