[__NSCFString containsString:]: unrecognized selector sent to instance 的解决方案

看到这个错的时候 一般就是iOS系统不兼容的原因
我现在基本没有考虑iOS7的兼容,但有时候又偏偏有iOS7的机子,很无奈又要做适配

我最初写的代码是这样的:

if ([self.UserNameTF.text containsString:@"*"])
        {
            GFBLog(@"还有*号 不转换");
        }
        else
        {
            if ([self.UserNameTF.text containsString:@"*"] && [UITextField numberToNormalNumTextField:UserNameTF].length == 11)
            {
                GFBLog(@"还有*号 不转换");
            }
            else
            {
                self.userNumber = [UITextField numberToNormalNumTextField:self.UserNameTF];
            }
}

iOS7的机子上运行直接奔溃了:找了一会没有发现什么问题,起初我以为是 UITextField的代理方法有问题,我一个个代理方法注释了 最后发现问题所在。
重点就是 containsString 你看API的时候就会发现 这个方法是iOS8出来的,找到问题所在 就好解决了。

解决方法就是找一个iOS7使用的方法替换iOS8的这个 containsString 方法

解决方法:

NSRange range = [self.UserNameTF.text rangeOfString:@"*"];
        if(range.location != NSNotFound)
        {
            // 存在
            GFBLog(@"还有*号 不转换");
        }
        else
        {
            // 不存在
            NSRange range1 = [self.UserNameTF.text rangeOfString:@"*"];
            if (range1.location != NSNotFound && [UITextField numberToNormalNumTextField:UserNameTF].length == 11)
            {
                // 存在
                GFBLog(@"还有*号 不转换");
            }
            else
            {
                // 不存在
                self.userNumber = [UITextField numberToNormalNumTextField:self.UserNameTF];
            }
        }

就解决了····
其实也傻傻的··百度一些马上出来了,但我一般都比较喜欢先自己找到问题所在!从根本上解决问题!!!

因为前面没有时间,很多东西没有记录,现在开始每次遇到问题都记录下来,不管问题大小,都做一个记录。当做以后的笔记看。

你可能感兴趣的:(iOS随手记)