Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用多个描述符对对象数组进行排序_Ios_Objective C_Sorting_Nsarray_Descriptor - Fatal编程技术网

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];

        ...
    }];
    ...
}