美文网首页iOS开发
iOS开发中rangeOfString:的一个需要注意的地方

iOS开发中rangeOfString:的一个需要注意的地方

作者: Jay_小咖 | 来源:发表于2019-01-07 13:02 被阅读4次

    一般我们判断某个字符串中是否包含指定的字符串时,往往会用到rangeOfString:方法,但这里就会有个小细节需要注意的,最近就发现在程序中出现了这个bug。细节没处理好吧,但往往细节决定成败。

    //NSString *testString = @"this is a string!";
    //rangeOfString:如果字符串为nil,那 != NSNotFound 都是成立的,即永远都是true
    NSString *testString = nil;
    BOOL found = [testString rangeOfString:@"this"].location != NSNotFound;
    NSLog(@"found:%@",@(found));//永远都是1
    

    我们应该使用下面的几种方式来修改我们的判断。

    //所以造成在程序中可能会出现判断出错的bug,正常是如果这个字符串为空时,应是false,所以应用要用下面的3种方式判断
        if (testString && [testString rangeOfString:@"this"].location != NSNotFound) {
            NSLog(@"testString: found1!%@",testString);
        }
        //或者使用下面的方式
        if ([testString rangeOfString:@"this"].length > 0) {
            NSLog(@"testString: found2!%@",testString);
        }
        
        //扩展:iOS8以后可以使用containsString:
        if ([testString containsString:@"this"]) {
             NSLog(@"testString: found3!%@",testString);
        }
    

    这样在判断时就不会出现错误了。所以特别要注意像nil、NSNULL、@""等空值判断的处理,可以统一封装成一个函数。

    相关文章

      网友评论

        本文标题:iOS开发中rangeOfString:的一个需要注意的地方

        本文链接:https://www.haomeiwen.com/subject/pscurqtx.html