Ios 使用多个描述符对对象数组进行排序
我正试图整理一堆英雄(物品)。每个英雄都是这样的Ios 使用多个描述符对对象数组进行排序,ios,objective-c,sorting,nsarray,descriptor,Ios,Objective C,Sorting,Nsarray,Descriptor,我正试图整理一堆英雄(物品)。每个英雄都是这样的 @interface Hero : NSObject <NSCoding> @property (strong,nonatomic) NSString *name; @property (strong,nonatomic) NSString *correctAnswers; @property (strong,nonatomic) NSString *falseAnswers; @property (strong,nonatomic
@interface Hero : NSObject <NSCoding>
@property (strong,nonatomic) NSString *name;
@property (strong,nonatomic) NSString *correctAnswers;
@property (strong,nonatomic) NSString *falseAnswers;
@property (strong,nonatomic) NSString *bonus;
@property (strong,nonatomic) NSString *level;
-(NSInteger*) inLevel;
+(Hero*) createHero:(NSString*)name
inLevel:(NSString*)level
withBonus:(NSString*)bonus
correctAnswers:(NSString*)correctAnswers
andFalseOnes:(NSString*)falseAnswers;
- (NSString *)description;
@end
我不知道出了什么问题。有人能指出我的错误吗
-------自解-----------
嘿,谢谢你指出解决方案。这是我给其他有同样问题的人的正确代码
@interface Hero ...
-(NSString*) heroBonus;
-(NSString*) heroLevel;
@end
-(void) sortHeros {
NSSortDescriptor *level = [NSSortDescriptor sortDescriptorWithKey:@"heroLevel" ascending:NO comparator:^NSComparisonResult(id a, id b) {
int levelHero1 = [a intValue];
int levelHero2 = [b intValue];
...
}];
NSSortDescriptor *bonus = [NSSortDescriptor sortDescriptorWithKey:@"heroBonus" ascending:NO comparator:^NSComparisonResult(id a, id b) {
int bonusHero1 = [a intValue];
int bonusHero2 = [b intValue];
...
}];
...
}
它告诉您,您将密钥路径发送到的类没有实现“bonus”的getter或方法。它还表示“NSCFString,意思是将
奖金
密钥路径发送到字符串对象,而不是英雄
对象。您有一个名为“奖金”的NSString*和一个名为“奖金”的NSSortDescriptor*。“可能只是我,但编译器也可能会感到困惑。显示接收崩溃的确切行。我还会将奖金排序描述符的名称更改为sortBonus或其他名称
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString bonus]: unrecognized selector sent to instance 0x9674520'
@interface Hero ...
-(NSString*) heroBonus;
-(NSString*) heroLevel;
@end
-(void) sortHeros {
NSSortDescriptor *level = [NSSortDescriptor sortDescriptorWithKey:@"heroLevel" ascending:NO comparator:^NSComparisonResult(id a, id b) {
int levelHero1 = [a intValue];
int levelHero2 = [b intValue];
...
}];
NSSortDescriptor *bonus = [NSSortDescriptor sortDescriptorWithKey:@"heroBonus" ascending:NO comparator:^NSComparisonResult(id a, id b) {
int bonusHero1 = [a intValue];
int bonusHero2 = [b intValue];
...
}];
...
}