我在我的应用程序和.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建议我如何解决问题...
答案 0 :(得分:1)
这是因为编译器不确定你是否会返回一些东西 您的方法执行以下操作:
if case == 0: return [activities objectAtIndex:row];
if case == 1: return [activities objectAtIndex:row];
在实践中,这将始终返回一个值。但是,编译器在理论上完全检查您的代码,并发现如果大小写是除0
和1
之外的任何其他整数,则表示您的方法不会返回。
底线是您需要在return nil;
- block =)之后添加switch
,因此您的方法将始终返回(nil
将被解释为@""
in这种情况)。