有没有人在iOS上使用NSDataDetector来匹配航班信息?它看起来真的amazingly powerful,除了我根本无法使用它。
以下是我正在尝试的内容:
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:(NSTextCheckingTypes)NSTextCheckingTypeTransitInformation error:&error];
[detector enumerateMatchesInString:string
options:0
range:NSMakeRange(0, [string length])
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSLog(@"Detected: %@, %@", result, [result URL]);
}
我正在尝试各种各样的字符串,包括我在日历中可以找到其中包含航班信息的每个日历条目的正文。
示例:
但这些都不匹配。如果我更改数据检测器类型以包含NSTextCheckingTypePhoneNumber或NSTextCheckingTypeLink,那些匹配很好。但我无法获得航班数据。
任何人都有运气吗?
答案 0 :(得分:0)
在OS X上检测到航班号,但在iOS上未检测到。请向Apple提交一个错误,以便更新文档,或者在iOS上获得对此的支持。
答案 1 :(得分:0)
void TopOpenGL::splitYuvPlanes(unsigned char *data, int size, unsigned char *y, unsigned char *u, unsigned char *v)
{
for ( int c = 0 ; c < ( size - 4 ) ; c+=4 ) {
*y = *data; // Y0
data++;
*u = *data; // U0
u++;
*u = *data; // U0
data++;
y++;
*y = *data; // Y1
data++;
*v = *data; // V0
v++;
*v = *data; // V0
data++;
y++;
u++;
v++;
}
}
唯一的区别是存储在 NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:(NSTextCheckingTypes)NSTextCheckingTypeTransitInformation error:nil];
NSString *result = @"Pick up Laura at Airport UA 1255";
[detector enumerateMatchesInString:result options:0 range:NSMakeRange(0, [result length]) usingBlock:^(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL * _Nonnull stop) {
NSLog(@"%@ %@",result, [result components]);
}];
2016-05-20 11:49:29.912 detectTest[20894:4085484] <NSTransitInformationCheckingResult: 0x7fcc92019f30>{25, 7} {
Flight = 1255;
}
而不是[result components]