我正在尝试对YOEvento对象的NSMutableArray进行排序。
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...
数组在app delegate中声明为在此处恢复:
NSMutableArray *eventosParsed;
@property (nonatomic, retain) NSMutableArray *eventosParsed;
@synthesize eventosParsed;
填充数组后,我试图通过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
答案 0 :(得分:0)
您正尝试按键@"diaDeInicio"
对数组进行排序,但正如消息告诉您的那样:
-[<NSCFString 0x4b564b0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key diaDeInicio.
字符串没有那个键。您有一个字符串数组,因此您无法按该键排序。
使用YOEvento对象而不是字符串填充数组,然后您就可以通过该键对数组进行排序。