私のアプリでは、さまざまな評価レベルがあります
例えば
70-80 Good
81-95 Excellent
60 Average
次に、77または88のようなテスト結果値があります。
重要: 70-80のような範囲をテキストとしてデータベースに保存します。
適切な答えを得るために、この値をグレーディングレベルからどのように比較できますか?
私のアプリでは、さまざまな評価レベルがあります
例えば
70-80 Good
81-95 Excellent
60 Average
次に、77または88のようなテスト結果値があります。
重要: 70-80のような範囲をテキストとしてデータベースに保存します。
適切な答えを得るために、この値をグレーディングレベルからどのように比較できますか?
データベース、coredata、またはテキストファイルから文字列に読み込む必要があります。
文字列を次のように読みましょう:
NSString *gradeRange=@"70-80";
NSArray *breakRange=[gradeRange componentsSeparatedByString:@"-"];
NSInteger score=77;
if( (score > [breakRange[0] integerValue]) && (score < [breakRange[0] integerValue]) ){
NSLog(@"%ld lies in %@.", score, gradeRange);
//Here you can log, display as per your need
}
//else if // similarly for all ranges
私はこのようなことをします:
NSString* str_good = @"70-80"; //From the database
NSRange good_range = NSRangeFromString(str_good);
good_range.length = good_range.length-good_range.location; //Ranges are (location, length) we convert it to that format
NSString* str_excellent = @"81-95"; //From the database
NSRange excellent_range = NSRangeFromString(str_excellent);
excellent_range.length = excellent_range.length-excellent_range.location; //Ranges are (location, length) we convert it to that format
int grading = 77;
if(NSLocationInRange(grading, good_range)) {
NSLog(@"good");
}
if(NSLocationInRange(grading, excellent_range)) {
NSLog(@"excellent");
}
範囲をテキストとしてデータベースに保存しないでください。そうすれば、読むたびに解析して、そのグレードレベルの上限と下限に分割する必要があります。
代わりに、次のようにレベルをテーブルに保存します。
Name | minimumScore | maximumScore
Excellent | 81 | 95
Good | 70 | 80
WHERE
そうすれば、。のような句を使用して、レベルの名前を簡単に照会できますactual >= minimumScore AND actual <= maximumScore
。
私があなたの質問を理解した場合、あなたは次のようにすることができます:
if (result >= 81 && result <= 95) {
//Excellent
}
成績に応じて、このようなカスタムメソッドを1つ作成します。
-(NSString*)getGradeWithMin:(int)minValue max:(int)maxValue
{
return (minValue>80 && maxValue<=100) ? @"A" : ((minValue>60 && maxValue<=80) ? @"B" : ((minValue>40 && maxValue<=60) ? @"C" : @"D"));
}
この後componentsSeparatedByString
、最大範囲と最小範囲を分離するために使用します。
NSArray *boundary = [@"70-80" componentsSeparatedByString:@"-"];
NSLog(@"Grade is : %@",[self getGradeWithMin:[[boundary objectAtIndex:0] intValue] max:[[boundary objectAtIndex:1] intValue]]);
これがあなたにアイデアを与えることができることを願っています。