0

の最初と 2 番目の選択に基づいて、特定の数値を出力しようとしていUIPickerViewます。ここにこのコードがあります。

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    if([[list objectAtIndex:[pickerView selectedRowInComponent:0]] isEqual: @"1 Gallon"] && [list2 objectAtIndex:[pickerView selectedRowInComponent:1] isEqual: @"Grams"])
        output.text = @"1 GALLON GRAMS";
    if([[list objectAtIndex:[pickerView selectedRowInComponent:0]] isEqual: @"2 Gallons"] && [list2 objectAtIndex:[pickerView selectedRowInComponent:1] isEqual: @"Ounces"])
        output.text = @"2 GALLONS OUNCES";
}

しかし、No visible @interface for NSMutableArraydeclares the selectorのエラーが発生し続けますobjectAtIndex:isequal

2 つの値が返す値を比較するにはどうすればよいですか? のようIF comp(0) == 3 and comp(1) ==2に、3.4 を自分のラベルに出力します。

4

1 に答える 1

4

これは、NSMutableArray に「objectAtIndex: isEqual」セレクターがないためです。

ピッカー ビューから NSString を取得し、それを NSMutableArray オブジェクト (おそらく " list" および " list2" という名前の ivar) に保存した文字列と比較する必要があります。

例えば

NSString * stringPointedToFromPicker = (NSString *)[list objectAtIndex: [pickerView selectedRowInComponent: 0]];
if([stringPointedToFromPicker isEqual: @"1 Gallon"]) // okay for now, but do you want
    output.text = @"1 GALLON GRAMS";        // hard coded, non-localized strings like this?
于 2013-04-15T01:40:16.400 に答える