我有一个带有两个UITextFields
的iOS应用,允许用户手动输入纬度和经度坐标。我很困惑的一件事是,如何确保输入的数据是有效的坐标?
你能说我还有其他检查吗?
我怎样才能检查UITextField.text
是否有字母和数字?我可以使用正则表达式吗?
更新
所以为了澄清我的问题,这些是我要检查的字符串类型:
答案 0 :(得分:1)
您可以使用正则表达式来验证数字,但更简单的方法是尝试使用double
将每个文本字段的字符串值转换为NSNumberFormatter
并查看如果有效:
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *number = [numberFormatter numberFromString:myTextField.text];
if (number != nil) {
// The number is correct!
double coordinate = number.doubleValue;
NSLog(@"Coordinate: %f", coordinate);
} else {
// The number is incorrect!
NSLog(@"Invalid coordinate entered.");
}
一旦您为每个坐标部分获得了double
个,就可以使用CLLocationCoordinate2D
函数形成CLLocationCoordinate2DMake
。
形成CLLocationCoordinate2D
后,您可以使用CLLocationCoordinate2DIsValid
功能检查纬度和经度部分是否在正确的范围内。
答案 1 :(得分:1)
您可以检查特定CLLocationCoordinate2D是否有效
CLLocationCoordinate2D myCoordinate=CLLocationCoordinate2DMake(latitude, longitude);
if (CLLocationCoordinate2DIsValid(myCoordinate)) {
NSLog(@"Coordinate valid");
} else {
NSLog(@"Coordinate invalid");
}