CFStringTokenizer文档在CFStringTokenizerAdvanceToNextToken()中有两个相互矛盾的语句:
CFStringTokenizerAdvanceToNextToken ..。 返回值 如果令牌程序成功地找到令牌并将其设置为当前令牌,则令牌的类型。如果令牌程序找不到令牌,则返回kCFStringTokenizerTokenNone。有关可能的值,请参见“令牌类型”。 ..。 如果找到令牌,则将其设置为当前令牌,函数返回true;否则,当前令牌无效,函数返回false。
第一段(返回一个令牌类型)是我想看到的:例如,它允许您检查令牌是否完全由非字母数字字符组成。然而,第二段(返回真假)似乎是实际发生的事情。
有什么想法吗?为什么会这样,或者如何解决这个问题?
发布于 2009-05-08 23:48:43
标题注释没有提到返回true或false,当标头和联机文档不一致时,标题通常是正确的。
在一个简单的测试中,我可以获得除0和1以外的返回值,所以您所看到的问题可能更具体;您能发布失败的示例代码吗?
发布于 2009-05-09 02:27:40
它们的意思可能是“非零”和“零”的广义意义上的“真”和“假”。如果它找到一个令牌,该函数将返回kCFStringTokenizerTokenNormal (即1)或掩码的某些组合(不管是哪种方式,非零/“真”)。如果没有,则函数返回kCFStringTokenizerTokenNone (为零/“false”)。
当然,这是一种模糊的语言,所以请在苹果Bug记者上提交一个文档错误。
发布于 2013-02-27 07:34:43
如果您要寻找的是忽略CFNumber类型令牌的能力,那么您可以使用:
while (tokenType != kCFStringTokenizerTokenNone) {
if ( (tokenType & kCFStringTokenizerTokenHasHasNumbersMask) == 0) { // ignore numbers
range = CFStringTokenizerGetCurrentTokenRange(tokenizer);
NSString *token = [string substringWithRange:NSMakeRange(range.location, range.length)];
[tokensArray addObject:token];
}
tokenType = CFStringTokenizerAdvanceToNextToken(tokenizer);
}https://stackoverflow.com/questions/842211
复制相似问题