请考虑以下代码:
-(NSString*)getNextOvulationString{
if (self.daysToNextOvulation < 0){
return [NSString stringWithFormat:@"Овуляция была %li дней назад", labs(self.daysToNextOvulation)];
} else if (self.daysToNextOvulation == 0){
return [NSString stringWithFormat:@"Овуляция началась"];
} else if (self.daysToNextOvulation > 0){
return [NSString stringWithFormat:@"Овуляция началась"];
}
}
有3个案例,很明显,我们会得到一个保证。
仍然,编译器不允许我构建,因为错误:
控制无效功能的到达结束
如何解决这个问题?
答案 0 :(得分:2)
您需要最后添加else
才能返回NSString
,因此请更改if
这样的条件。
-(NSString*)getNextOvulationString{
if (self.daysToNextOvulation < 0){
return [NSString stringWithFormat:@"Овуляция была %li дней назад", labs(self.daysToNextOvulation)];
}
else if (self.daysToNextOvulation == 0){
return [NSString stringWithFormat:@"Овуляция началась"];
}
else //No need to compare here
return [NSString stringWithFormat:@"Овуляция началась"];
}
}
答案 1 :(得分:2)
由于最终条件是详尽的情况,将最终else if
更改为else
并将其称为一天。如果您愿意,请将您的条件添加为相同 - 评论以保持清晰。
最终结果如下:
- (NSString *)getNextOvulationString
{
if (self.daysToNextOvulation < 0)
{
return [NSString stringWithFormat:@"Овуляция была %li дней назад", labs(self.daysToNextOvulation)];
}
else if (self.daysToNextOvulation == 0)
{
return [NSString stringWithFormat:@"Овуляция началась"];
}
else // self.daysToNextOvulation > 0
{
return [NSString stringWithFormat:@"Овуляция началась"];
}
}
您也可以完全删除最终else
:
- (NSString *)getNextOvulationString
{
if (self.daysToNextOvulation < 0)
{
return [NSString stringWithFormat:@"Овуляция была %li дней назад", labs(self.daysToNextOvulation)];
}
else if (self.daysToNextOvulation == 0)
{
return [NSString stringWithFormat:@"Овуляция началась"];
}
// self.daysToNextOvulation > 0
return [NSString stringWithFormat:@"Овуляция началась"];
}
既然最后两个条件return
同样的话,你甚至可以这样写:
- (NSString *)getNextOvulationString
{
if (self.daysToNextOvulation < 0)
{
return [NSString stringWithFormat:@"Овуляция была %li дней назад", labs(self.daysToNextOvulation)];
}
else // self.daysToNextOvulation >= 0
{
return [NSString stringWithFormat:@"Овуляция началась"];
}
}
或者这样,再次完全放弃else
:
- (NSString *)getNextOvulationString
{
if (self.daysToNextOvulation < 0)
{
return [NSString stringWithFormat:@"Овуляция была %li дней назад", labs(self.daysToNextOvulation)];
}
// self.daysToNextOvulation >= 0
return [NSString stringWithFormat:@"Овуляция началась"];
}
注意:鉴于当前条件和返回值,以上所有代码在功能上都是等效的。