2014-09-23 96 views
-1

選擇器compareUserObject:toObject:永遠不會被調用,並且該數組只能通過比較狀態和簡單的相等性檢查來排序。該查詢是一個Parse查詢。如何讓我的自定義比較器(compareUserObject:toObject :)被調用?orderBySortDescriptor不調用選擇器

NSSortDescriptor *statusDescriptor = [[NSSortDescriptor alloc] 
             initWithKey:@"status" 
             ascending:NO 
             selector:@selector(compareUserObject:toObject:)]; 

[query orderBySortDescriptor:statusDescriptor]; 

回答

1

那是因爲你傳遞了2個參數。看這個文檔:

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSSortDescriptor_Class/index.html#//apple_ref/occ/instm/NSSortDescriptor/initWithKey:ascending:selector

「的方法進行比較的對象的屬性時使用例如caseInsensitiveCompare:或localizedCompare :.選擇器必須指定由財產的標識的值實現的方法。的keyPath 用於比較選擇器傳遞一個參數,要比較的對象對自身,並且必須返回適當NSComparisonResult常數選擇器必須 具有相同的方法簽名爲:」

- (NSComparisonResult)localizedCompare:(NSString *)aString