为这样一个新手问题道歉。
我编写了一个类方法,它接受三个字符串并返回一个子字符串。
我编写的条件语句只允许在满足某些条件时返回子字符串。但是,如果无法提取子字符串,我不确定需要返回什么。目前我有方法返回一个默认的'错误'字符串,但我觉得这可能不是最好的做法。
这是我的方法:
+(NSString *)ExtractSubstringFrom:(NSString *)sourceString
Between:(NSString *)firstString And:(NSString *)secondString {
NSRange stringRangeOne = [sourceString rangeOfString:secondString];
NSString *resultString;
if (stringRangeOne.location != NSNotFound) {
resultString = [sourceString substringToIndex:stringRangeOne.location];
}
NSRange stringRangeTwo = [sourceString rangeOfString:firstString];
if (stringRangeTwo.location !=NSNotFound) {
resultString = [resultString substringFromIndex:stringRangeTwo.location+stringRangeTwo.length];
return resultString;
}
else return @"Error!";
//To do... improve error checking
}
如何使此方法更加错误友好?
答案 0 :(得分:6)
在Objective C中有几种处理此类错误的方法:
nil
。由于在Objective C中允许对nil
对象执行操作,因此这是相对安全的。NSError
个对象 - 这是最终用户可以解决的更常见的错误,例如连接和配置问题。这种API的不幸副作用是需要设置并传递额外的参数。答案 1 :(得分:0)
这里的实际最佳做法是不在类方法中执行此操作,而是在将接受该值的事物上实现Key Value Validation,并在设置之前调用验证方法。因此,您将从此方法中删除此验证/变异逻辑,而是将其置于验证方法中,并在控制器中修改值,在设置值之前调用验证方法。这使您的验证逻辑有机会修改该值(即默认值),或者如果输入值无法强制转换为可用的值,则返回错误。
有关Objective-C中错误处理的更多常规信息,请参阅Programming With Objective-C: Dealing with Errors和Error Handling Programming Guide