通过NSDataDetector的NSTextCheckingTypeTransitInformation检测航班信息并不匹配任何东西

时间:2013-05-07 02:55:58

标签: ios objective-c datadetectortypes nsdatadetector

有没有人在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]);
}

我正在尝试各种各样的字符串,包括我在日历中可以找到其中包含航班信息的每个日历条目的正文。

示例:

  • “UA460 SFO到YVR [航班] 6/12/2013美国联合航空公司(UA)#460 dep SFO 7:57 pm PDT arr YRR 10:14 pm PDT;票号#0162360127882,票号#0162360127883; conf#K5XBXY;注意: ,座位:--- / 30A,座位:--- / 30B “
  • “在机场UA 1255挑选劳拉”
  • “Lufthansa 1128 Business(C)| Seat 07F Frankfurt Barcelona 2 h 0 m 679英里 FRA下午1:15 pm下午3:15,到达2012年5月5日星期五 汉莎航空1128 业务(C)|座椅07F |与航空公司确认或更改座位*“

但这些都不匹配。如果我更改数据检测器类型以包含NSTextCheckingTypePhoneNumber或NSTextCheckingTypeLink,那些匹配很好。但我无法获得航班数据。

任何人都有运气吗?

2 个答案:

答案 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]

中的航班信息