UIPickerViewDelegate方法结束时发出警告

时间:2011-08-12 09:24:05

标签: iphone objective-c xcode

我在我的应用程序和.h文件中使用pickerview我编写了如下代码

@interface tweetViewController : UIViewController<UIPickerViewDataSource,UIPickerViewDelegate> {
    NSArray* activities;
    NSArray* feelings;
}
@property (nonatomic,retain) NSArray *activities;
@property (nonatomic,retain)NSArray *fellings;

我已经在U.hicker文件中为UIPickerviewDatasource编写代码,如下工作正常

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 2;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    if(component==0)
    {
        return [activities count];
    }
    else
    {
        return [feelings count];
    }
}

但是UIPickerViewDelegate的以下代码在方法的右大括号中显示警告消息

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    switch (component) {
        case 0:
            return [activities objectAtIndex:row];


        case 1:
            return [feelings objectAtIndex:row];
    }
}

PLZ建议我如何解决问题...

1 个答案:

答案 0 :(得分:1)

这是因为编译器不确定你是否会返回一些东西 您的方法执行以下操作:

if case == 0: return [activities objectAtIndex:row];
if case == 1: return [activities objectAtIndex:row];

在实践中,这将始终返回一个值。但是,编译器在理论上完全检查您的代码,并发现如果大小写是除01之外的任何其他整数,则表示您的方法不会返回。

底线是您需要在return nil; - block =)之后添加switch,因此您的方法将始终返回(nil将被解释为@"" in这种情况)。