NSSortdescriptor без ключей и вместо этого использовать атрибут модели Custom Data

Возьмите следующий код, я должен помнить имена key для моих пользовательских моделей данных.

// define a sort descriptor
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc]initWithKey:@"timeStamp"; ascending:YES];
NSArray *scArray = [[NSArray alloc]initWithObjects:descriptor, nil];

Нет ли способа сделать что-то вроде myCustomDataModel.timeStamp вместо этого, как я делаю, когда вставляю объект в свой магазин с помощью своего пользовательского managedObjects? Одна из причин сделать это таким образом — уменьшить количество ошибок при наборе текста. (Я забыл, как называется это слово, что-то вроде шрифта? Слово, которое я собирался использовать, имело значение меньшего количества ошибок из-за проверки времени компиляции)


person Pavan    schedule 30.05.2014    source источник
comment
Ваш вопрос о сущностях Core Data? Тогда это может быть дубликат stackoverflow.com/questions/23473897/   -  person Martin R    schedule 30.05.2014
comment
Как указывает ответ Матиаса на упомянутый вопрос @MartinR, вы можете использовать mogenerator, чтобы делать то, что ищете. Большинство ответов довольно неуклюжи, но использование mogenerator делает их довольно прямолинейными. ИМО, вы всегда должны использовать его всякий раз, когда используете CoreData.   -  person David Berry    schedule 30.05.2014


Ответы (1)


Да, вы можете сделать что-то подобное, используя функцию NSStringFromSelector. Пока ваш массив заполнен объектами из вашего класса myCustomDataModel, и этот класс имеет свойство с именем timeStamp, вы можете сделать это,

    NSString *sortString = NSStringFromSelector(@selector(timeStamp));
    NSSortDescriptor *sorter = [NSSortDescriptor sortDescriptorWithKey:sortString ascending:YES];
    self.myArray = [self.myArray sortedArrayUsingDescriptors:@[sorter]];

Если вы ошибетесь в имени селектора, вы получите предупреждение от компилятора «необъявленный селектор».

person rdelmar    schedule 30.05.2014