4

有没有人在 iOS 上使用 NSDataDetector 来匹配航班信息?它看起来非常强大,但我根本无法让它工作。

这是我正在尝试的:

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 [航班] 2013 年 6 月 12 日联合航空公司 (UA) #460 dep SFO 太平洋夏令时间晚上 7:57 到达 YVR 太平洋夏令时间晚上 10:14;票 #0162360127882,票 #0162360127883;会议 #K5XBXY;注意:,座位: ---/30A,座位:---/30B"
  • “在 UA 1255 机场接劳拉”
  • “汉莎航空 1128 商务 (C) | 座位 07F 法兰克福巴塞罗那 2 小时 0 米 679 英里 FRA 下午 1:15 BCN 下午 3:15 ,于 2012 年 10 月 5 日星期五抵达汉莎
    航空 1128 商务 (C) | 座位 07F | 确认或更改座位航空公司*”

但这些都不匹配。如果我将数据检测器类型更改为包括 NSTextCheckingTypePhoneNumber 或 NSTextCheckingTypeLink,它们匹配得很好。但我无法获取航班数据。

有人对此有任何运气吗?

4

2 回答 2

0

在 OS X 上检测到航班号,但在 iOS 上不检测。请向 Apple 提交错误以更新文档或在 iOS 上获得对此的支持。

于 2014-03-19T11:12:58.557 回答
0
    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]而不是[result URL]

于 2016-05-20T18:56:08.573 回答