2013-06-21 97 views
0

我整理我的NSSet使用:不兼容的指針類型發送 'NSSortDescriptor * __強' 到類型的參數「的NSArray *

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
[[testSet.questions allObjects] sortedArrayUsingDescriptors:descriptor]; // warning 

但它會導致警告:

Incompatible pointer types sending 'NSSortDescriptor *__strong' to parameter of type 'NSArray * 
+2

閱讀文檔,預計會有NSSortDescriptors數組! – Karl

+0

@BaZinga你是否擺脫了警告與我的答案。 – Mayur

+0

-1太本地化。快速瀏覽文檔解釋了一切。 – borrrden

回答

3

你傳遞單個描述符,其中陣列是預期的,試試這個:

[testSet.questions allObjects] sortedArrayUsingDescriptors:@[descriptor]]; 
+0

謝謝Gary ... – KDeogharkar

1

應該在數組中傳遞NSSortDescriptor。所以你必須創建一個數組,然後在數組中添加描述符。現在,你應該傳遞數組,而不是NSSortDescriptor的:

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
NSArray *descriptorArray = [NSArray arrayWithObject:descriptor] 
[[testSet.questions allObjects] sortedArrayUsingDescriptors:descriptorArray]; 
2

你應該會看到這種方法。它要求你傳遞一個Array對象,而不是NSSortDescriptor對象。

[sortDescriptions sortedArrayUsingDescriptors:<#(NSArray *)#>] 

所以你必須創建一個數組並放入你的NSSortDescriptor對象。試試這個

NSArray *_sortArray = [[NSArray alloc] initWithObjects:descriptor, nil]; 
    [testSet.questions allObjects] sortedArrayUsingDescriptors:_sortArray]; 

    or 

    [testSet.questions allObjects] sortedArrayUsingDescriptors:@[descriptor]]; 

看它是否能幫助:)

1

試試這個:

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
[[testSet.questions allObjects] sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]]; 

希望這會有所幫助。

相關問題