Fouandation 中常见的理解错误区

1.NSString

//快速创建(实例和类方法) 存放的地址是 常量区

NSString * string1 = [NSString alloc]initWithString:@“123”];

NSString * string3 = [NSString stringWithString:@“123”];

//格式化方法创建   存放地址是堆区

NSString * string2 = [NSString alloc]initWithFormat:@“%d”,123];

NSString * string4 = [NSString stringWithFormat:@“%d”,123];

所以当判断两个字符串内容是否相同时

if(string1 isEqualToString:string3) //string2与string4也一样

{

}//结果内容是相同的

但是

if(string? == string ? )

{

}//当是1 与 3 时 是是同一个对象,因为内存的指向同一个地址(常量区)

//当是 2 与 4 时 不是同一个对象 ,因为内容相同,但是指向的内存地址不一样(堆区)

注意点:NSMutableString 用快速创建的一样是 存放在堆区

2.比较 字符串的大小

NSComparisonResult  result =【string1 caseInsensitiveCompare:string2】;//返回的是基本数据类型:-1 降序 0 相等  1 升序

3.字符串长度 : 【string1 length】;

4.字符串转换:

4.1 字符串首字母大写(有空格的单词首个字母都大写):[ string  capitalizedString]

4.2字符串所有字母大写:[ string  uppercaseString]

4.3.字符串所有字母小写:[ string  lowercaseString]

5 字符串转换成基本数据类型

float i = 【string floatValue】;(boolValue , intValue….)

6.字符串转换成数组(有规律的字符串)

NSString * MD = [NSString  stringWithString:@“abc 123 xyz”];

NSArray *array = [MD componentsSeparatedByString:@“ “];//空格作为分割

7.字符串的截取:

NSString  *subString1 = [string subStringToIndex:2];//从开头到 第X位 不包括X位

NSString  *subString2 = [string subStringFromIndex:2];//从第X位 到最后 包括第X位

NSRange range ;

range.location = 4;

range.length = 2;

第二种定义range

NSRange *range = {4,2};

NSString  *subString2 = [string subStringWithRange : range];

8.字符串的拼加:

1.通过格式化字符串

NSString *string1 = [NSString  stringWithString:@“123”];

NSString *string1 = [NSString  stringWthString:@“abc”];

NSSting *appengString = [NSString alloc]]initWithFormat:@“%@%@“,string1,string2];

2.NSString *appString  = [string1 stringByAppendingString:string2];

3.NSString *appString 3 = [string1 stringByAppendingFormat:@“%@“,string2];

9.查询字符串

NSString *string1 = [NSString  stringWithString:@“123abc_maxxyz”];

NSRange range = [string1 rangeOfString:@“abc_max”];

if(range.location != NSNotFound)

{

} NSNotFound = NSIntergeMax; 查询range 这段范围 的起始点是否找得到

//注意点:要查看range的location and length 可以通过 NSStringFormrange(range);

9.NSMutableString继承 Nstring

常用的插入 ,替换,删除

NSMutableString *mutableString = [NSMutableString alloc]]initWithString:@“abc”];

9.1 插入

[mutableString insertString:@“…xyz” atIndex:3];

9.2 替换

[mutableString replaceCharactersInRange:NSMakeRange:(0,3) withString:@“efg”];

9.3删除

[mutableString deleteCharactersInRange:NSMakeRange:(0,3)];

///////////////////////////////////////////////

NSArray  的知识点

1.数组的创建(类方法和实例方法)

NSArray * array1 = [NSArray arrayWithObject:@“one”];//单个

NSArray * array2 = [NSArray arrayWithObjects:@“one”,@“two”,nil];//创建多个对象

NSArray * array3 = [NSArray arrayWithArray:array1]; //通过数组直接创建

2.数组中元数的个数

[array1 count];

3,增加数组中的元素

NSArray *array4 = [array2 arrayByAddingObject:@“end”];

4.将数组转换成字符串

NSString *string  = [array4 componentsJoinsByString:@“," ];

5.根据对象返回索引下标,根据索引下标返回对象

NSString *string  = [array2 objectAtIndex:2];//根据索引下标返回对象

NSInteger a  = [array2 indexOfObject:@“one”];//根据对象返回索引下标

NSString string = [array2 lastObject];//返回数组最后一个元素

6.数组中是否包含某个元素

BOOL isContains = [array2 containsObject:@“one”];

7.NSMutableArray 是继承NSArray

NSMutableArray *mutableArray = [NSMutableArray array];

NSMutableArray *mutableArray2 = [NSMutaleArray arrayWithCapacity:5];//这个仅仅起到标志内存,可以超出和少于

NSMutabelArray *mutableArray3 = [NSMutableArray arrayWithObjects:@“aaa”,@“bbb”,nil];

//添加

[mutableArray3 addObject:@“ccc”];//在数组最后添加一个元素

//插入

[mutableArray3 insertObject:@“” atIndex: 0]; //在指定的位置插入一个元素

//删除

[mutableArray3 removeLastObject];//移除最后一个元素

[mutableArray3 removeObject:@“bbb”];//指定元素移除

[mutableArray3 removeObjectAtIndex:@“0”];//根据下标移除元素

[mutableArray3 removeObjectsInArray:array2];//根据数组移除元素

[mutableArray3 removeAllObjects];//移除所有元素

//替换

[mutableArray3  replaceObjectAtIndex:0 withObject:@“”replace];

//遍历数组

常规遍历

NSArray *array  =[NSArray arrayWithObjects:@“One”,@“Two”,nil ];

for(int index = 0; index < [array count];index++)

{

NSString *string = [array objectAtIndex:index];

NSLog();

}

快速枚举

for(NSString *string in array)

{

NSLog();

}

for(id  string in array)

{

NSLog();

}//id 包含了* ,当不知道类型的时候使用id

/////////////////////////////////////////////////////

NSDictionary

1.NSDictionary 的创建(实例和类方法)

NSDictionary *dic1 = [NSDictionary dictionaryWithObject:@“value" forKey:@“k1”];

NSDictionary *dic2 = [NSDictionary dictionaryWithObjectAndKeys:@“v1" ,@“k1”,@“v2" ,@“k2”,@“v3" ,@“k3”,nil];//创建多个

NSDictionary *dic3 = [NSDictionary dictionaryWithDictionary:dic1];//通过字典创建

//获取字典的Value

NSString *string =【dic2 objectForKey:@“key”];

//获取字典的所有Key

[dic2 allKeys];

//获取字典的所有Value

[dic2 allValues];

NSMutableDictionary 继承 NSDictionary

//增加整个字典

[dic2 addEntriesFromDictionary:dic4];

//增加一个键值对

[dic2 setValue:@“Object” forKey:@“key”];

//创建一个空的字典

NSMutableDictionary *dicc = [NSMutableDictionary dictionary];

[dicc setDictionary:dic2];//特别注意的是:如果dicc 如果有值则会被覆盖

//移除

[dic2 removeObjectForKey:@“k1”];//移除一个对应键值对

[dic2 removeObjectForKeys:arrayKey];//移除多个键值对

遍历字典

NSArray *key  = [dic allKeys];

for(int index = 0; index < [key count];index ++)

{

id  k = [key objectAtIndex:index];

id V = [dic objectForKey:k];

NSLog();

}

//快速遍历

for(id key in dic1)

{

NSString *string = [dic1 objectForKey:key];

NSLog();

}

//枚举遍历

NSEnumerator *enumerator = [dic1 keyEnumerator];

id key = [enumerator nextObject];

while(key)

{

id Value = [dic1 objectForKey:key];

NSLog();

id key = [enumerator nextObject];

}

/////////////////////////////////////

NSSet

创建(实例和类方法)初始化

NSSet *set1 = [NSSet alloc]]initWitObjects:@“1”,@“2”,nil];

NSSet * set2 = [NSSet setWithObjects:@“one”,@“two”,nil];

NSArray *array = [NSArray arrayWithObjects:@“x”,@“y”,nil];

NSSet *set3 = [NSSet setWithArray:array];//通过数组创建集合

NSSet *set4 = [NSSet setWithSet:set1];//通过集合创建集合

//计算集合有几个元素

int a = [set1 count];

//获取所有的集合元素

NSArray *objects = [set allObjects];

//获取集合中任意一个元素

id object = [set anyObjects];

//集合中 是否包含某个元素

BOOL isContains = [set1 containsObject:@“2”];

//集合与集合间是否存在相同的元素

BOOL isIntersect = [set1 intersectsSet:set2];

//集合与集合是否完全匹配

BOOL isEqual = [set1 isEqual set2];

//集合是否是另一个集合的子集

BOOL isSubset = [set1 isSubsetOfSET:set5];

//对已有集合增加一元素创建新的集合

NSSet *set = [set1 setByAddingObject:@“12”];

//对已有集合增加集合创建新的集合

NSSet *set = [set1 setByAddingObjectsFromSet:set2];

//对已有集合增加数组创建新的集合

NSSet *set = [set1 setByAddingObjectsFromArray:array];

/////////////////

NSMutableSet((类方法和实例)初始化

NSMutableSet *set1 = [NSMutableSet setWithObjects:@“1”,@“2”,nil];

NSMutableSet *set2 = [NSMutableSet setWithObjects:@“d”,@“2”,nil];

//“减去”相同的

[set1 minusSet:set2];

//集合中相同的(交集)

[set1 intersectSet:set2];//记得与intersectsSet 的差别

//并集

[set1 unionSet: set2];

//根据元素移除

[set1 removeObjects:@“1”];

//移除集合所有的元素

[set1 removeAllObjects];

//根据数组增加集合元素

[set1 addObjectsFromArray:array];

Fouandation(NSString ,NSArray,NSDictionary,NSSet) 中常见的理解错误区的更多相关文章

  1. [转]一些NSArray,NSDictionary,NSSet相关的算法知识

    iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...

  2. NSData NSDate NSString NSArray NSDictionary 相互转换

    // NSData NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; NSDa ...

  3. NSData NSDate NSString NSArray NSDictionary 相互转化

    //    NSData  NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; ...

  4. python中常见的报错信息

    python中常见的报错信息 在运行程序时常会遇到报错提示,报错的信息会提示是哪个方向错的,从而帮助你定位问题: 搜集了一些python最重要的内建异常类名: AttributeError:属性错误, ...

  5. Python中常见的报错名称

    Python中常见的报错名称 1.SyntaxError 语法错误.看看是否用Python关键字命名变量,有没有使用中文符号,运算符.逻辑运算符等符号是不是使用不规范. 2.IndentationEr ...

  6. [翻译] 用 ObjectiveSugar 扩展NSArray NSDictionary NSSet NSNumber

    source - https://github.com/supermarin/ObjectiveSugar Look like a girl, act like a lady, think like ...

  7. 一些NSArray,NSDictionary,NSSet相关的算法知识

    iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...

  8. 遍历NSArray, NSDictionary, NSSet的方法总结

    1,for循环读取 NSArray: NSArray *array = /*…*/ ; i<array.count; i++) { id object = array[i]; // do sth ...

  9. JS 调试中常见的报错的解决办法

    报错:Uncaught SyntaxError: Unexpected token o in JSON at position 1 at JSON.parse (<anonymous>) ...

随机推荐

  1. zabbix3.0.4 邮件告警详细配置

    sendEmail是一个轻量级,命令行的SMTP邮件客户端.如果你需要使用命令行发送邮件,那么sendEmail是非常完美的选择:使用简单并且功能强大.这个被设计用在php.bash perl和web ...

  2. java 获取文件列表,并按照文件名称排序

    需求:获取全部的日志文件,并按照文件名称倒序排列,把最新的文件放在最前1.获取全部的日志文件:(方法:public List<String> ergodic(File file,List& ...

  3. shell中的条件判断、参数以及变量替换

    文章转自: http://www.cnblogs.com/maxupeng/archive/2011/07/02/2096551.html 一.test命令 test命令是shell内部命令,它计算作 ...

  4. R语言-用R眼看琅琊榜小说的正确姿势

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html 目录: 零:写在前面的一些废话 一.R眼看琅琊榜的基本原理 1.导入数据 2.筛选数据 3.多条 ...

  5. php 301 重定向 转自http://www.icoa.cn/a/475.html

    内容简介 有时候我们的有多个域名指向同一个网站,或者我们更换了网站的网址,那么怎么样将原来网站的流量导入到新网址中呢,那么我们可以用301重定向的方式,而且这种方式是对搜索引擎比较友好的方式.如果首页 ...

  6. HDOJ 4652 Dice

      期望DP +数学推导 Dice Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  7. Linux进程间通信(九):数据报套接字 socket()、bind()、sendto()、recvfrom()、close()

    前一篇文章,Linux进程间通信——使用流套接字介绍了一些有关socket(套接字)的一些基本内容,并讲解了流套接字的使用,这篇文章将会给大家讲讲,数据报套接字的使用. 一.简单回顾——什么是数据报套 ...

  8. Linux/CentOS下开启MySQL远程连接,远程管理数据库

    当服务器没有运行PHP.没装phpMyAdmin的时候,远程管理MySQL就显得有必要了. 第一步:开启MySQL用户的远程访问权限 mysql -u root -p mysql # 第1个mysql ...

  9. GitHub使用教程

    一直以来都想使用Git来管理自己平时积累的小代码,就是除了工作之外的代码了.有时候自己搞个小代码,在公司写了,就要通过U盘或者网盘等等一系列工具进行Copy,然后回家才能继续在原来的基础上作业.Cop ...

  10. 实现统一用户体验的BaseActivity

    对一个规模较大的App开发团队来说,保持统一的代码规范是个好的事情,同时,保持统一的用户体验规范也是个好的事情. 当用户进入一个页面时,一般会有以下交互场景:场景1, 初始化loading,页面从se ...