Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 选择器语法:为什么出现无法识别的选择器错误?_Ios_Objective C_Selector - Fatal编程技术网

Ios 选择器语法:为什么出现无法识别的选择器错误?

Ios 选择器语法:为什么出现无法识别的选择器错误?,ios,objective-c,selector,Ios,Objective C,Selector,我有一个比较两个对象的方法: - (NSComparisonResult)compare:(NSObject *)object1 to:(NSObject *)object2{ // do some stuff return NSOrderedSame; // or NSOrderedAscending or NSOrderedDescending } 此方法的调用方式如下: NSArray *sortedSyncedAufgaben = [syncedAufgabe sort

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

- (NSComparisonResult)compare:(NSObject *)object1 to:(NSObject *)object2{
    // do some stuff
    return NSOrderedSame; // or NSOrderedAscending or NSOrderedDescending
}
此方法的调用方式如下:

NSArray *sortedSyncedAufgaben = [syncedAufgabe sortedArrayUsingSelector:@selector(compare:to:)];
NSArray * sortedSyncedAufgaben = [syncedAufgabe sortedArrayUsingComparator:^(NSObject *a, NSObject* b) {
    return [self compare:a to:b];
}];
现在,当我在iPhone上运行此操作时,会在选择器的行中抛出一个“无法识别的选择器错误”:

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


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

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

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

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

或者,您可以将比较逻辑移动到comparator块中,并将
compare:to:
方法一起删除。

我们可以看到整个错误消息吗?该方法定义在哪里?在
syncedAufgabe
是实例的类上?@JoshCaswell是的,在同一类/视图中controller@NobodyNada
***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[ImpfVorgang比较:到:]:发送到实例0x14ebf040'的无法识别的选择器
@mradlmaier是否
compare:to:
在ImpfVorgang.m中定义?