繁体   English   中英

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

[英]selector syntax: why I am getting unrecognized selector error?

我有一个比较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:方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM