objective-C Ⅱ

     接第一讲 objective-c初识
一、oc中的数组:NSArray
定义:
NSArray *arrayName=[NSArray arrayWithObjects:obj1,obj2,obj3,obj4,nil];//数组是以nil空作为结束的标志
使用:
for(int i=0;i<4;i++)
{
Object *obj=[arrayName objectAtIndex:i];
[obj  functionName];
}
例如:

//数组的使用

//定义四个Student类型的变量 并初始化

andAddress:@"大唐"];

andAddress:@"花果山"];

andAddress:@"高老庄"];

andAddress:@"流沙河"];

//数组的定义和初始化(数组是以nil空作为结束的标志的)

NSArray *students=[NSArrayarrayWithObjects:stu1,stu2,stu3,stu4,nil];//定义一个数组名为 students元素类型全部为Student 元素个数为4的数组

//利用for循环使用数组中的元素

; i<; i++) {

//根据数组的索引取出相应的对象

Student *stu=[students objectAtIndex:i];

//调用取出对象的sayHi方法

[stusayHi];

}

//数组中的元素可以是多种类型

//数组元素不能存放基本的数据类型(如int float..)

//如果存放基本数据类型,要把它先转换成NSNumber的对象 例如:

],nil];//定义了一个名为array的数组,该数组中包含4个元素,分别为Student、String、Date、Number类型

//注意:在打印引用型对象是,默认的是打印类的类型和内存地址,在.m文件中改写description方法(相当于java中的toString方法),可以改变其输出形式 在.m文件中改写后的description方法

/**   在.m文件中重写后的description方法    [不用在.h文件中定义接口

]

//重写description方法 相当于java中的toString方法

-(NSString *)description//重写description方法后,让其输出姓名(也可以是其他自定义的字符串等)

{

returnname;

}

*/

//包含不同类型的数组的使用

; i<; i++) {

//根据数组的索引取出相应的对象

id  arry=[arraysobjectAtIndex:i];//id为泛型 是指任意类型的对象 定义id泛型对象时不在变量前加*

//直到赋值的时候才确定是什么类型

NSLog(@"%@",arry);

}

NSLog(@"for-in的使用");

//for-in 的使用和java中的一样,循环的次数依赖与数组元素的个数

for (id tempin arrays) {

NSLog(@"%@",temp);

}

//NSArray的子类NSMutableArray为可变的数组  可以进行增删改查

//    NSMutableArray *mArray=[[NSMutableArray alloc]init];

NSMutableArray *mArray=[NSMutableArrayarrayWithObjects:stu1,@"aaa",@"abc",nil];

//    //NSMutableArray是可变数组,是NSArray的子类,里面的元素可以增删改查

NSLog(@"数组的长度%ld",[mArray count]);//输出数组的长度(元素的个数)调用count方法,采用长整型站位符

//向数组中添加元素

[mArrayaddObject:@"cccc"];

[mArray addObject:[NSNumbernumberWithBool:YES]];

NSLog(@"添加后的数组元素");

NSLog(@"%@",mArray);

//删除数组中的元素

的元素即第一个元素

NSLog(@"删除第一个元素后的数组元素");

NSLog(@"%@",mArray);

//注:按住windows键和鼠标左键可以查看类的.h文件,以便于我们更加清楚的了解该类中的方法,更好的使用该类

//NSMutableArray中的扩展方法

//    - (void)addObject:(id)anObject;

//    - (void)insertObject:(id)anObject atIndex:(NSUInteger)index;

//    - (void)removeLastObject;

//    - (void)removeObjectAtIndex:(NSUInteger)index;

//    - (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;

二、集合的使用

集合中只能存放对象类的元素,要想存放基本数据类型的元素,要先将其转换为对象类再进行存放,集合中存放的数据元素可以是不同类型的和数组一样

Set集合

//Set集合

//定义和初始化

NSSet *set=[NSSetsetWithObjects:@"aa",@"bb",@"cc",nil];

//set集合中的元素是无序的唯一存在的相互独立的长度是不可变的

//set集合的使用

NSLog(@"%@",set);

NSLog(@"%@",[setanyObject]);//取出set里面的所有元素

//Set集合的子类NSMutableSet类似于Array的子类是可变长度的集合 也可以增加删除元素

//按住windows键和鼠标左键可以查看其中定义的方法来进行使用

三、字符串
Cocoa为我们准备了一个与字符串操作相关的结构体NSRange
NSRange:
    表示相关事物的范围,包含两个成员,一个是长整型location,表示起始位置,另外一个是长整型length表示长度

                 比如要得到一个起始位置为10,3个长度的范围,它可以有三种方式创建:


第一种调用函数可以这么写:

 
NSRange range =NSMakeRange (10,3);


第二种直接给成员赋值:


NSRange range;

        range.location=10;

        range.length=3;


第三种应用C语言的聚合结构赋值机制:


NSRange range ={10,3};

字符串的使用:(如下)

int main(int argc,const char * argv[])

{

//一、字符串的创建

//第一种直接创建

NSString *str=@"zhangsan";

//创建空的字符串

NSString *str1=[[NSStringalloc]init];

NSLog(@"str=%@,str1=%@",str,str1);

//依赖创建 str2相当于是str的指针

NSString *str2=[NSStringstringWithString:str];//str2依赖str,str释放后,str2变空

NSLog(@"str2=%@",str2);

//第四种重点

];

NSLog(@"%@",str3);

//二、字符串的长度

NSLog(@"str3的长度是:%ld",[str3 length]);

//三、字符串的比较

NSString *str4=[NSStringstringWithFormat:@"zhangsan"];

if(str==str4)//和java中一样,采用==来判断两个字符串是否相等时,判断的是地址是否相等,而不是内容是否相等

{

NSLog(@"== 相等");

}

if ([strisEqualToString:str4]) {//和java中的类似,判断两个字符串的内容是否相等,采用isEqualToString函数

NSLog(@"isEqualToString 相等");

}

//四、字符串的大小比较

//采用 compare方法,返回枚举类型[-1,0,1],NSOrderedAscending(1)升序,前者大于后者、NSOrderedSame(0)相等,前者等于后者、NSOrderedDescending(-1)前者小于后者

//compare从第一个字母开始往后比较,比较的是字母的ASC码

NSString *str5=@"abc";

switch ([str4 compare:str5] ) {

caseNSOrderedAscending:

NSLog(@"大于");

break;

caseNSOrderedSame:

NSLog(@"等于");

break;

caseNSOrderedDescending:

NSLog(@"小于");

break;

default:

break;

}

//五、前缀 后缀 的判断

//后缀的判断用  hasSuffix函数返回bool类型

NSString *str6=@"IOS.doc";

if ([str6hasSuffix:@".doc"]) {//判断str6是否是以.doc结尾

NSLog(@"这是一个word文档");

}

//前缀的判断用  hasPrefix函数返回bool类型

NSString *str7=@"http://www.baidu.com";

if ([str7hasPrefix:@"http://"]) {//判断str7是否以http://开头

NSLog(@"这是一个网址");

}

//六、查找子字符串 rangeOfString函数

//NSRange为一个结构体,在定义变量的时候不需要在变量前加*

//NSRange包含两个成员:location和length;其中localtion表示字符串的位置(一般都是从0开始的),length表示字符串的长度表示一个字符串的范围

NSRange range=[str7 rangeOfString:@"www"];//定义一个结构体变量,并为其赋初值

if (range.location!=NSNotFound)//查找子字符串在父字符串中的位置range.location

{

NSLog(@"location:%ld,length:%ld",range.location,range.length);

}else

{

NSLog(@"未找到字符串");

}

//七、截取子字符串

的位置到最后(包含第七个位置)

]);//从开头到第七个位置(不包含第七个位置)

NSLog(@"%@",[str7substringWithRange:range]);//从range范围截取字符串

//八、字符串的转换

NSString *str8=@"123";

int num=[str8intValue];//将字符串str8转换成int基本类型

NSLog(@"%d",num);

NSLog(@"%@",[str7 uppercaseString]);//转换成大写

NSLog(@"%@",[str7 lowercaseString]);//转换成小写

NSLog(@"%@",[str7 capitalizedString]);//每句首字母大写

//九、字符串的替换

//1、stringByReplacingOccurrencesOfString方法(全部替换)

NSString *str9=@"2B青年aa,2B青年dd,2B青年ff,2B青年xx";

//将字符串str9中的“2B”替换成“文艺”

NSLog(@"%@",[str9 stringByReplacingOccurrencesOfString:@"2B"withString:@"文艺"]);

//2、stringByReplacingCharactersInRange方法(在一定范围内替换)

) withString:@"文艺"]);//将0~2范围内的子字符串替换成目标字符串替换的长度可以不一样

//十、字符串的切割 返回一个数组

NSArray *arr=[str9 componentsSeparatedByString:@","];//以“,”为界进行字符串的切割,将切割后的字符串放进arr数组中

NSLog(@"%@",arr);

//十一、字符串的拼接拼接后的新字符并没有改变原字符串中的内容而是生成了一个新的字符串

//    NSString *str8=@"123";

//第一种、直接在原字符串后加新字符串进行拼接

NSLog(@"%@",[str8stringByAppendingString:@"abc"]);

//第二种、采用字符串格式符进行拼接

]);

//十二、可变字符串  NSMutableString

NSLog(@"可变字符串");

// NSMutableString为NString的子类,继承NSString所有得方法

NSMutableString *mstr=[[NSMutableStringalloc]init];//定义一个空字符串

NSLog(@"%@",mstr);//输出

//1、拼接字符串  与NSString不同的是 NSMutableString拼接字符串是在原字符串的基础上拼接的,没有生成新的字符串,而是改变了原来字符串的样式

[mstr appendString:@"iphone5"];//普通拼接方式

NSLog(@"%@",mstr);//输出

[mstr ];//format拼接方式

NSLog(@"%@",mstr);//输出

//2、删除字符串中的字符删除一个范围

NSRange rang=[mstr rangeOfString:@"ipad"];//查找“ipad”所在的范围

if(rang.location!=NSNotFound)

{

[mstr deleteCharactersInRange:rang];

}

else

{

NSLog(@"未找到字符串,删除失败。");

}

NSLog(@"%@",mstr);


;

}

四、课后练习

int main(int argc, const char * argv[])

{

//第一题:将Hello World and Sunshine 子复查unzhong的“World”替换为“iBokan” 两种方式

NSString *str=@"Hello World and Sunshine";

NSLog(@"%@",str);

NSLog(@"%@",[str stringByReplacingOccurrencesOfString:@"World"withString:@"iBokan"]);

NSLog(@"%@",str);

) withString:@"iBokan"]);

//第二题:求字符串“158”和“39”按十进制数值做差后的结构以字符串形式输出

NSString *num1=@"158";

NSString *num2=@"39";

int n1=[num1 intValue];

int n2=[num2 intValue];

int result=n1-n2;

NSString *jieguo=[NSString stringWithFormat:@"%d",result];

NSLog(@"%@",jieguo);

//第二题可以缩写为:

,[NSStringstringWithFormat:@"%d",[@"158"intValue]-[@"39"intValue]]);

;

}





较好文章博址:http://blog.csdn.net/amdbenq/article/details/7869166

































objective-C Ⅱ的更多相关文章

  1. Automake

    Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...

  2. Objective C中的ARC的修饰符的使用---- 学习笔记九

    #import <Foundation/Foundation.h> @interface Test : NSObject /** * 默认的就是__strong,这里只是做示范,实际使用时 ...

  3. Objective的字符串拼接 似乎没有Swift方便,但也可以制做一些较为方便的写法

    NSString *str1 = @"字符串1"; NSString *str2 = @"字符串2"; //在同样条件下,Objective的字符串拼接 往往只 ...

  4. [转] 从 C 到 Objective C 入门1

    转自: http://blog.liuhongwei.cn/iphone/objective-c/ 进军iPhone开发,最大的难点之一就是怪异的Objective C语法了.不过,了解之后才发现,原 ...

  5. Objective C运行时(runtime)

    #import <objc/runtime.h> void setBeingRemoved(id __self, SEL _cmd) { NSLog(@"------------ ...

  6. Objective C ARC 使用及原理

    手把手教你ARC ,里面介绍了ARC的一些特性, 还有将非ARC工程转换成ARC工程的方法 ARC 苹果官方文档 下面用我自己的话介绍一下ARC,并将看文档过程中的疑问和答案写下来.下面有些是翻译,但 ...

  7. Objective -C学习笔记之字典

    //字典:(关键字 值) // NSArray *array = [NSArray array];//空数组 // NSDictionary *dictionary = [NSDictionary d ...

  8. 刨根问底Objective-C Runtime

    http://chun.tips/blog/2014/11/05/bao-gen-wen-di-objective%5Bnil%5Dc-runtime-(2)%5Bnil%5D-object-and- ...

  9. Objective-C( Foundation框架 一 字符串)

    Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重 ...

  10. Objective C类方法load和initialize的区别

    Objective C类方法load和initialize的区别   过去两个星期里,为了完成一个工作,接触到了NSObject中非常特别的两个类方法(Class Method).它们的特别之处,在于 ...

随机推荐

  1. Python进阶之map()、reduce()、filter()

    map()函数 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB",&q ...

  2. 一个由proguard与fastJson引起的血案

    更多内容在这里查看 https://ahangchen.gitbooks.io/windy-afternoon/content/ 更新微信sdk导致ComposeData中的内部类ComposeDat ...

  3. 异构数据源海量数据交换工具-Taobao DataX 下载和使用

    DataX介绍 DataX是一个在异构的数据库/文件系统之间高速交换数据的工具,实现了在任意的数据处理系统(RDBMS/Hdfs/Local filesystem)之间的数据交换. 目前成熟的数据导入 ...

  4. 字符串匹配——Brute-Force 简单匹配算法

    下面几篇文章记录字符串匹配算法. Brute-Force算法简称BF算法,中文名叫简单匹配算法.正如其名,简单粗暴,按部就班地遍历所有字符,算法简单,效率低下,不被看好. 但也正因为不常用,反而容易生 ...

  5. HDOJ 4252 A Famous City 单调栈

    单调栈: 维护一个单调栈 A Famous City Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

  6. C++中顶层const和底层const

    1. 顶层 const 与底层 const 概念 指针本身是一个对象,由于,指针实际相应着内存单元的一段存储空间,然而,指针所指向的也是一个数据对象,因此,指针是一个常量与指针所指向的是一个常量是两个 ...

  7. java读取TXT文件的方法

    java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...

  8. sqlite学习笔记4:表的创建和删除

    前面做了那么多不就是为了数据弄几张表么.接下来看看怎么新建表. 一 新建表 基本的语法例如以下: CREATE TABLE database_name.table_name( column1 data ...

  9. UpdatePanel + 弹出框

    ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "", "alert('操作成功!') ...

  10. windows下设置/删除Tomcat的开机自启动

    绿色版tomcat在配置好Java环境以后直接运行bin下面的startup.bat就能够正常启动,但是在客户这里很多时候都 需要tomcat开机自动启动.下面简单介绍一如何在windows下面开机自 ...