4
iPhoneのプログラムで問題が発生しています。これは私のコードです - 私は財産NSArrayの数を整数値と比較すると、コードが正しく実行されない
@property (nonatomic) NSInteger selectedGradeIndex;
を持っていると私は、次のセッターメソッドを書いた今、アレイ
grades = [[NSArray arrayWithObjects:@"Grade 1", @"Grade 2", @"Grade 3", nil] retain];
を作成し、私のビューコントローラののviewDidLoadで
- (void) setSelectedGradeIndex:(NSInteger)newValue
{
if(newValue >= [grades count])
{
NSLog(@"newValue = %d >= [grades count] = %d",newValue, [grades count]);
newValue = 0;
}
else if(newValue < 0)
{
NSLog(@"newValue = %d < 0",newValue);
newValue = [grades count] - 1;
}
selectedGradeIndex = newValue;
lblGrade.text= [grades objectAtIndex:selectedGradeIndex];
}
コードのどこかにある
self.selectedGradeIndex = -1;
セッター内のログは
newValue = -1 >= [grades count] = 6
私は混乱していますを示しています。ログが条件が偽であることが明確に示されている場合、コントロールは最初のif条件の内側に移動するのはなぜですか?
私は
- (void) setSelectedGradeIndex:(NSInteger)newValue
{
int count = [grades count];
if(newValue >= count)
{
NSLog(@"newValue = %d >= count = %d",newValue, count);
newValue = 0;
}
else if(newValue < 0)
{
NSLog(@"newValue = %d < 0",newValue);
newValue = count - 1;
}
selectedGradeIndex = newValue;
lblGrade.text= [grades objectAtIndex:selectedGradeIndex];
}
にセッターを変更し、期待通り今ではすべてが動作します。ログは
newValue = -1 < 0
私は以前の方法が失敗した理由を教えていただけますか?