簡體   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