0

なぜこれがうまくいかないのか理解できません.単に id num が毎回使用されていないと言っているだけです...そしてそれを配列に追加することはありません. これに関するヘルプは大歓迎です。私はほぼ確実に明らかな何かを見逃していますが、それは私を怒らせます。

- (IBAction)idNumInputEnd:(id)sender
{
    // Check if ID Number has been used before, if it hasnt, add it to the list.
    NSString *idNumCheck = idNumberInput.text;

    if ([idNumberList containsObject:idNumCheck])
    {
        NSLog(@"This id number has been used before, ask user if he would like to reload the       data");
    }
    else
    {
        NSLog(@"This id number hasn't been used before and is thus being added to the array");
        [idNumberList addObject:idNumCheck];
    }
}
4

1 に答える 1

1

私の容疑者(彼のコメントによると、マーティンによって共有されています)idNumberListは、決して割り当てられず、空の に初期化されていませんNSMutableArray

その場合、ARC は に割り当てnilられるidNumberListため、 と同様[idNumberList containsObject:idNumCheck]に評価されます。nil[idNumberList addObject:idNumCheck]

言い換えれば、評価されたコードは次のようになります

if (nil) {
    NSLog(@"This id number has been used before, ask user if he would like to reload the       data");
} else {
    NSLog(@"This id number hasn't been used before and is thus being added to the array");
    nil;
}

そのため、else分岐は常に行われ、オブジェクトaddObjectへの呼び出しはnilサイレントに失敗し、これが発生している動作の原因になります。

これを修正するには、idNumberList次のように初期化します。

idNumberList = [[NSMutableArray alloc] init]; 
于 2013-01-27T18:37:17.923 に答える