我通过音频插孔接收数据。它大部分时间都可以工作,但是你可以通过它接收不良数据。我希望能够在崩溃之前捕获错误。这是代码
- (void) updateBytCtl:(NSString*) text {
// NSLog(text);
NSString *subString = [[text componentsSeparatedByString:@"="] objectAtIndex:0];
NSString *expDateString = [[text componentsSeparatedByString:@"="]objectAtIndex:1];
NSString *expDate = [expDateString substringToIndex:4];
NSString *expDateYear = [expDateString substringToIndex:2];
NSString *expDateMonth = [expDate substringFromIndex:2];
subString = [[subString componentsSeparatedByString:@";"] objectAtIndex:1];
}
有很多原因导致读者的数据不好。我希望它只是通过一般性错误并让用户重新刷卡。
答案 0 :(得分:2)
您可以假设数组中对象的存在或字符串的长度,例如:
[[text componentsSeparatedByString:@"="] objectAtIndex:1]
您可能希望执行类似
的操作NSArray *components = [text componentsSeparatedByString:@"="];
if (components.count > 1) {
subString = [components objectAtIndex:1];
} else {
// Display error to user and return
}
您不希望假设数组具有某个索引或字符串是一定长度,始终执行检查,如果您的代码失败,则显示您想要的任何错误并返回。