1

CFStringTokenizer 文档在 CFStringTokenizerAdvanceToNextToken() 中有两个相互冲突的语句:

CFStringTokenizerAdvanceToNextToken

...

返回值

令牌生成器成功找到令牌并将其设置为当前令牌时的令牌类型。如果标记器找不到标记,则返回 kCFStringTokenizerTokenNone。有关可能的值,请参阅“令牌类型”。</p>

...

如果找到一个token,则将其设置为当前token,函数返回true;否则当前令牌无效并且函数返回 false。

第一段(返回标记类型)是我希望看到的:例如,它可以让您检查标记是否完全由非字母数字字符组成。然而,第二段(返回真或假)似乎是实际发生的事情。

任何想法为什么会这样,或者如何解决它?

4

3 回答 3

1

标题注释没有提到返回真或假,当标题和在线文档不同意时,通常是标题是正确的。

在一个简单的测试中,我能够获得 0 和 1 以外的返回值,因此您看到的问题可能更具体;您可以发布失败的示例代码吗?

于 2009-05-08T23:48:43.637 回答
0

如果您正在寻找的是忽略 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);
}
于 2013-02-27T07:34:43.040 回答
0

它们可能意味着“非零”和“零”更广泛意义上的“真”和“假”。如果它找到一个标记,则函数返回kCFStringTokenizerTokenNormal(为 1)或掩码的某种组合(无论哪种方式,非零/“真”)。如果不是,则函数返回kCFStringTokenizerTokenNone(为零/“假”)。

不过,这肯定是含糊不清的语言,因此请在Apple Bug Reporter上提交文档错误。

于 2009-05-09T02:27:40.867 回答