[英]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.