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