Несовместимые типы указателей, отправляющие «NSSortDescriptor *__strong» в параметр типа «NSArray *».

Я сортирую свой 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 *

person KDeogharkar    schedule 21.06.2013    source источник
comment
Читайте документацию, ожидается массив NSSortDescriptors!   -  person Karl    schedule 21.06.2013
comment
@BaZinga, ты избавляешься от предупреждения с моим ответом.   -  person Mayur    schedule 21.06.2013
comment
-1 Слишком локализовано. Беглый взгляд на документы объясняет все.   -  person borrrden    schedule 21.06.2013


Ответы (4)


Вы передаете один дескриптор, где ожидается массив, попробуйте следующее:

[testSet.questions allObjects] sortedArrayUsingDescriptors:@[descriptor]];
person Gary    schedule 21.06.2013

Вы должны увидеть этот метод. Это требует, чтобы вы передали ему объект Array, а не объект NSSortDescriptor.

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

поэтому вам нужно создать массив и поместить в него свой объект NSSortDescriptor. Попробуй это

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

  or

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

посмотрим, может поможет :)

person Nathan Ou    schedule 21.06.2013

NSSortDescriptor должен передаваться в виде массива. Итак, вам нужно создать массив, а затем добавить в него дескриптор. Теперь вы должны передать массив вместо NSSortDescriptor:

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

Попробуй это :

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

Надеюсь, это поможет.

person Mayur    schedule 21.06.2013