iOS中containsString和rangeOfString的区别小结
前言
containsString 仅仅只能在iOS8中有,iOS7和iOS7以下用rangeOfString来代替,containsString功能比较简单、单一。但是rangeOfString功能比较复杂,它能遍历整个字符串,里面的options可以有好多情况,这两者有什么区别呢?下面来一起看看吧。
一、containsString
//1.containString查找字符串是否包含“ iOS ” //2.containString适用于ios8系统,在ios7系统下会崩溃
NSString*str = @“我是 iOS 开发工程师”; if([str containsString:@" iOS"]) { NSLog(@"字符串包含“ iOS”"); }
二、rangeOfString
//1.rangeOfString查找字符串是否包含“ iOS ” //ios7系统下也适用 NSRangerange = [strrangeOfString:@" iOS"];
if(range.location != NSNotFound) {//有@“ iOS” NSLog(@"字符串包含“ iOS”"); }
注意:
1. - (BOOL)containsString:(NSString *)str NS_AVAILABLE(10_10, 8_0);
2.但是等应用审核通过了却遇到了一个无比大的坑。
3.大部分的 4s 或者5s用户就投诉在打开用到这个方法的页面出现了崩溃。
4.然后一看api ,顿时就傻了。在6、7 系统上这个方法肯定会由于找不到会崩溃。
5.最后。比较靠谱的判断方法还是使用
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
相关推荐
-
iOS中containsString和rangeOfString的区别小结
前言 containsString 仅仅只能在iOS8中有,iOS7和iOS7以下用rangeOfString来代替,containsString功能比较简单.单一.但是rangeOfString功能比较复杂,它能遍历整个字符串,里面的options可以有好多情况,这两者有什么区别呢?下面来一起看看吧. 一.containsString //1.containString查找字符串是否包含" iOS " //2.containString适用于ios8系统,在ios7系统下会崩溃 NS
-
iOS中setValue和setObject的区别详解
网上关于setValue和setObject的区别的文章很多,说的并不准确,首先我们得知道: setObject:ForKey: 是NSMutableDictionary特有的:setValue:ForKey:是KVC的主要方法 话不多说,上代码: - (void)viewDidLoad { [super viewDidLoad]; //setObject和setvalue的区别 NSMutableDictionary *dic = [NSMutableDictionary dictionary
-
iOS中几种定时器的实现小结
在软件开发过程中,我们常常需要在某个时间后执行某个方法,或者是按照某个周期一直执行某个方法.在这个时候,我们就需要用到定时器. 然而,在iOS中有很多方法完成以上的任务,到底有多少种方法呢?经过查阅资料,大概有三种方法:NSTimer.CADisplayLink.GCD.接下来我就一一介绍它们的用法. 一.NSTimer 1. 创建方法 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selecto
-
python中copy()与deepcopy()的区别小结
前言 copy()与deepcopy()之间的区分必须要涉及到python对于数据的存储方式. 深复制被复制对象完全再复制一遍作为独立的新个体单独存在.所以改变原有被复制对象不会对已经复制出来的新对象产生影响. 浅复制并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变. import copy origin = [1, 2, [3, 4]] #origin 里边有三个元素:1, 2,[3, 4] cop
-
微信小程序中target和currentTarget的区别小结
前言 在小程序中,e.target与e.currentTarget是非常重要的,尤其是涉及到页面传值时 currentTarget和target都是组件的一些属性值集合,由"data-属性名"定义的一些属性值 currentTarget:事件触发的当前事件(当前事件,可能是触发事件的源组件,可能是触发的事件组件(即触发事件源组件的子元素),此时点击子元素还是父元素,都是当前事件,应用e.currentTarget target:触发事件的源组件(事件注册/绑定所在组件) 举个例子: &
-
AnjularJS中$scope和$rootScope的区别小结
一句话总结: $rootScope针对全局的作用域生效 $scope只针对当前的controller作用域生效 用下面的例子来证明上述的说法: 定义一个模块名为myApp var myApp = angular.module('myApp', []); 创建oneController和twoController这两个controller oneController传入$scope和$rootScope myApp.controller('oneController', ['$scope', '$
-
awk中NR和FNR的区别小结和实例演示
一,NR和FNR的不同 NR:表示当前记录数 FNR:也表示当前记录数,但是FNR的作用域只在一个文件内.如果重新打开文件,FNR会从1开始. 二,实例说明 1,测试文件aaa,cccc 复制代码 代码如下: [root@Blackghost test2]# cat aaa //测试文件aaa 1111:23434:zhang hoadsf:asdf:ccc [root@Blackghost test2]# cat ccc //测试文件ccc 1111:23434:zhang hoa
-
Oracle中sys和system的区别小结
1. SYS用户具有DBA权限,并且拥有SYS模式,只能通过SYSDBA登陆数据库.是Oracle数据库中权限最高的帐号 SYSTEM具有DBA权限.但没有SYSDBA权限.平常一般用该帐号管理数据库就可以了. 2. (1)sys -- sysdba system --sysoper (2)startup/shutdown/dba管理两个都能做 (3)sys拥有数据字典(dictionay),或者说dictionay属于sys schema (4)sysdba比sysoper多了一个create
-
C#中Ilist与list的区别小结
常见问题: Ilist <> 本身只是一个泛型接口, 既然是接口当然不能实例化,只能用如下方法 IList <Class1> IList11 =new List <Class1>(); 但是为什么要这么用呢,为什么不直接用List: List <Class1> List11 =new List <Class1>(); 第一种用法有什么好处. 总结归纳一下: Ilist <> 是在 .net2.0里面才支持的 好处嘛..比如说human
-
iOS中排列组合算法的使用小结
前言 最近在项目中用到了排列组合计算,虽然比较简单,但是整个学习过程还是要记录下来的,以便以后可以吸取经验. 一般来说,排列组合就等于搜索. 注意点: 1.去重复:规定子集顺序必须升序: 2.候选数组的结果处理.必须深拷贝,否则最后的结果集里全是空的(加了一堆指针). 3.在写递归的时候(DFS:深度优先搜索),思路是先把以 1 开头的都找出来,再把 2 开头的都找出来 -- 所有在递归之前做过的事情,之后都要把它抹回来.递归做的事情能一句话描述清楚.递归就是不断地把规模变小,但是都做的一件事情
随机推荐
- 关于Angular2 + node接口调试的解决方案
- 利用CSS3新特性创建透明边框三角
- utf8和unicode编码究竟是什么关系?有何区别?
- CSS透明属性详解代码
- Node.js编程中客户端Session的使用详解
- 用正则提取全部的匹配结果的代码
- 效控制C#中label输出文字的长度,自动换行
- PHP数组函数array_multisort()用法实例分析
- Android自定义ViewGroup之FlowLayout(三)
- PHP二进制与字符串之间的相互转换教程
- JS实现数组按升序及降序排列的方法
- 如何优化SQL语句(全)
- jQuery实现form表单reset按钮重置清空表单功能
- java 判断二进制文件的方法
- asp.net 使用Response.Filter 过滤非法词汇
- Android手机卫士之获取联系人信息显示与回显
- bootstrap 通过加减按钮实现输入框组功能
- Android数据库LitePal的基本用法详解
- Android Studio中ButterKnife插件的安装与使用详解
- Vue单页应用引用单独的样式文件的两种方式