gpt4 book ai didi

ios - 尝试使用 "Incompatible pointer type.."进行排序时为 `sortedArrayUsingFunction`

转载 作者:行者123 更新时间:2023-11-28 20:15:55 24 4
gpt4 key购买 nike

我正在尝试根据价格字段对 NSMutableDictionaryNSMutableArray 进行排序。

NSString* priceComparator(NSMutableDictionary *obj1, NSMutableDictionary *obj2, void *context){

return @"just for test for the moment";

}

//In other function
arrayProduct = (NSMutableArray*)[arrayProduct sortedArrayUsingFunction:priceComparator context:nil];//arrayProduct is NSMutableArray containing NSDictionarys

在上面的声明中,我收到了以下我想修复的警告:

Incompatible pointer types sending 'NSString*(NSMutableDictionary *__strong,NSMutableDictionary *__strong,void*)' to parameter of type 'NSInteger (*)(__strong id, __strong id, void*)'

最佳答案

如错误所述,您的 priceComparator 函数 needs to be declared as returning NSInteger , 而不是 NSString *:

NSInteger priceComparator(NSMutableDictionary *obj1, NSMutableDictionary *obj2, void *context){
if (/* obj1 should sort before obj2 */)
return NSOrderedAscending;
else if (/* obj1 should sort after obj2 */)
return NSOrderedDescending;
else
return NSOrderedSame;
}

更好的是,您可以使用 NSSortDescriptors如果您需要排序的价格是一个简单的数值,它总是在这些字典中的给定键处。我认为这是语法:

id descriptor = [NSSortDescriptor sortDescriptorWithKey:@"price" ascending:YES];
NSArray *sortedProducts = [arrayProduct sortedArrayUsingDescriptors:@[descriptor]];

另请注意,所有 sortedArray... 方法都会返回一个新的普通 NSArray 对象,而不是 NSMutableArray。因此,上面示例代码中的 sortedProducts 声明。如果你真的需要你的排序数组仍然是可变的,你可以使用 sortUsingFunction:context: or sortUsingDescriptors: NSMutableArray 的方法对数组进行就地排序。请注意,这些方法返回 void,因此您不会将结果分配给任何变量,它会就地修改您的 arrayProduct 对象。

关于ios - 尝试使用 "Incompatible pointer type.."进行排序时为 `sortedArrayUsingFunction`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18094214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com