通过NSData向后搜索不起作用,仍然从前面读取

时间:2012-08-06 19:52:40

标签: objective-c nsdata

我在目标C中遇到以下问题:在更大的上下文中,我想在String中搜索子字符串并获取第一个这样的子字符串所在的位置。我也希望搜索从后面开始。例如: 通过搜索“K”在“K123K”上调用所需的功能应该得到3,因为我从后面开始。

在我的代码中,搜索NSData对象更有效,因为这是我读到的内容。所以我尝试了一些测试代码,看看我提出的方法是否有效:

    NSString *testString = @"01K234567K";
    NSData *testData = [testString dataUsingEncoding:NSUTF8StringEncoding];
    NSString *testLetter = @"K";
    NSData *kData = [testLetter dataUsingEncoding:NSUTF8StringEncoding];
    NSRange whereisK = [testData rangeOfData:kData options:NSBackwardsSearch      range:NSMakeRange(0, [testData length])];
    NSLog(@"loc: %d, len: %d",whereisK.location,whereisK.length);

结果与我的期望相反,似乎rangeOfData仍然从前面开始搜索:

    loc: 2, len: 1

我真的不知道我做错了什么。似乎NSBackwardsSearch没有做它的工作!我很高兴有任何帮助或建议......

1 个答案:

答案 0 :(得分:1)

该选项的正确值为NSDataSearchBackwards。您正在使用的选项用于NSString搜索。您可以阅读NSData documentation