0

我正在排序我的NSSet使用:

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 *
4

4 回答 4

3

您正在传递一个预期数组的描述符,试试这个:

[testSet.questions allObjects] sortedArrayUsingDescriptors:@[descriptor]];
于 2013-06-21T06:26:02.383 回答
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]];

看看它是否有帮助:)

于 2013-06-21T06:32:18.540 回答
1

NSSortDescriptor应该在一个数组中传递。所以你必须创建一个数组,然后在数组中添加描述符。现在你应该传递数组而不是NSSortDescriptor

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *descriptorArray = [NSArray arrayWithObject:descriptor]
[[testSet.questions allObjects] sortedArrayUsingDescriptors:descriptorArray];
于 2013-06-21T06:32:12.163 回答
1

试试这个 :

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

希望这会有所帮助。

于 2013-06-21T06:33:30.687 回答