Сортировка массива с использованием Desciptors выдает valueForUndefinedKey - PullRequest
0 голосов
/ 03 октября 2011

Я пытаюсь отсортировать NSMutableArray объектов YOEvento.YOEvento.h

@interface YOEvento : NSObject
{
    NSString *nombre; // stores the <name> tag
    NSDate *diaDeInicio; // stores the tag <dia-de-inicio>
    NSDate *diaDeFin; // stores the tag <dia-de-fin>
    NSString *entradilla; // stores the tag <entradilla>
}
@property (nonatomic, retain) NSString *nombre;
@property (nonatomic, retain) NSDate *diaDeInicio;
@property (nonatomic, retain) NSDate *diaDeFin;
@property (nonatomic, retain) NSString *entradilla;
@end

YOEvento.m

#import "YOEvento.h"
@implementation YOEvento
@synthesize nombre, diaDeInicio, diaDeFin, entradilla;
etc...

Массив объявлен в делегате приложения, как показано здесь:

NSMutableArray *eventosParsed;
@property (nonatomic, retain) NSMutableArray *eventosParsed;
@synthesize eventosParsed;

После заполнения массива IЯ пытаюсь отсортировать его по diaDeInicio:

NSSortDescriptor *descriptorByDate = [[NSSortDescriptor alloc] initWithKey:@"diaDeInicio" ascending:YES];
NSArray *descriptorsArray = [NSArray arrayWithObject:descriptorByDate];
[self.eventosParsed sortedArrayUsingDescriptors:descriptorsArray];
[descriptorByDate  release];

Но после попытки выполнить инструкцию [self.eventosParsed sortedArrayUsingDescriptors:descriptorsArray]; Я получаю сигнал SIGABRT и следующее сообщение в консоли:

'NSUnknownKeyException', reason: '[<NSCFString 0x4b564b0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key diaDeInicio.'

Я проверил содержимое массива перед инструкцией, и он, кажется, заполнен правильно сформированными объектами YOEvento, это копирование и вставка из информации отладчика в свойство eventosParsed первый элемент.Значения не отображаются, но каждая переменная экземпляра в объекте YOEvento имеет правильное значение.

eventosParsed   __NSArrayM *    0x4e900e0
0   YOEvento *  0x4ea3660
    NSObject    NSObject    {...}
    nombre          NSCFString *    0x4ea37e0
    diaDeInicio __NSDate *  0x4ea7370
    diaDeFin    __NSDate *  0x4ea6630
    entradilla  NSCFString *    0x4ea3c50

1 Ответ

0 голосов
/ 04 октября 2011

Вы пытаетесь отсортировать ваш массив по ключу @"diaDeInicio", но, как говорится в сообщении:

-[<NSCFString 0x4b564b0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key diaDeInicio.

Строки не имеют этого ключа.У вас есть массив строк, поэтому вы не можете сортировать по этому ключу.

Заполните массив объектами YOEvento вместо строк, и тогда вы сможете отсортировать массив по этому ключу.

...