gpt4 book ai didi

ios - 选择器语法:为什么我收到无法识别的选择器错误?

转载 作者:行者123 更新时间:2023-12-01 18:59:12 38 4
gpt4 key购买 nike

我有一种比较2个对象的方法:

- (NSComparisonResult)compare:(NSObject *)object1 to:(NSObject *)object2{
// do some stuff
return NSOrderedSame; // or NSOrderedAscending or NSOrderedDescending
}

该方法的调用方式如下:
NSArray *sortedSyncedAufgaben = [syncedAufgabe sortedArrayUsingSelector:@selector(compare:to:)];

现在,当我在iPhone上运行此命令时,选择器所在行会引发“无法识别的选择器错误”:

*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[[ImpfVorgang compare:to:]:无法识别的选择器发送到实例0x14ebf040'

怎么了?我以为每个参数都需要冒号?

最佳答案

sortedArrayUsingSelector:尝试将选择器应用于比较左侧的对象,而不是调用sortedArrayUsingSelector:的类。换句话说,如果选择器存在于您启动排序的类中,而不是存在于NSArray内部的对象的类中(即,不在ImpfVorgang类中),则您将看到“无法识别的选择器错误”。

您可以更改代码以手动应用选择器,如下所示:

NSArray * sortedSyncedAufgaben = [syncedAufgabe sortedArrayUsingComparator:^(NSObject *a, NSObject* b) {
return [self compare:a to:b];
}];

或者,您可以将比较逻辑移到比较器块中,然后完全删除 compare:to:方法。

关于ios - 选择器语法:为什么我收到无法识别的选择器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24026270/

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