4

这样做 NSComparator:

NSComparator comparatore = ^NSComparisonResult(NSMutableDictionary *aDictionary, NSMutableDictionary *anotherDictionary) {
            return [[aDictionary objectForKey:@"Item"] localizedCaseInsensitiveCompare:[anotherDictionary objectForKey:@"Item"]];
    };
lista = [listaNonOrdinata sortedArrayUsingComparator:comparatore];

我得到这个错误: 初始化'int(^)(struct NSMutableDictionary *,struct NSMutableDictionary *)'的不兼容块指针类型,预期'NSComparator'

我已在此站点和官方指南上阅读过有关此错误的信息,但尚未找到解决方案。

我已经尝试了一切,也许这里有人可以帮助我,或者也许有人知道如何以另一种方式做同样的事情。谢谢!

4

1 回答 1

4

NSComparator是一个期望两个ids 的块。您需要将id其作为参数类型,并在必要时在块内进行强制转换(在这种情况下,没有必要):

NSComparator comparatore = ^NSComparisonResult(id aDictionary, id anotherDictionary) {
    return [[aDictionary objectForKey:@"Item"] localizedCaseInsensitiveCompare:[anotherDictionary objectForKey:@"Item"]];
};
lista = [listaNonOrdinata sortedArrayUsingComparator:comparatore];
于 2013-08-02T10:18:51.677 回答