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. Android Every day a new function:two

    分享功能: 效果图: 代码(分享TEXT,视频或者图片设置type即可): @Override protected void onCreate(Bundle savedInstanceState) { ...

  2. redis的内部实现机制

    一 理论基础 redis

  3. [LeetCode]题解(python):155-Min Stack

    题目来源: https://leetcode.com/problems/min-stack/ 题意分析: 实现一个小的栈,包括初始化,push,pop,top,和getMin. 题目思路: 私用是用两 ...

  4. Oracle提示“资源正忙,需指定nowait”的解决方案

    Oracle提示“资源正忙,需指定nowait”的解决方案  | T 本文我们主要介绍了Oracle数据库操作表时提示“资源正忙,需指定nowait”的解决方案,希望能够对您有所帮助. AD:51CT ...

  5. ThinkPHP中ajax提交数据

    最近在做项目时遇到了一些需要从页面用ajax提交数据到后台的操作,无奈本人技术有限,网上苦寻,研究了一下ajax和thinkPHP的结合,黄天不负苦心人,终于搞定了. 闲话少叙,进入正题:我需要从页面 ...

  6. lint使用简介

    LINT工具是一种软件质量保证工具,许多国外的大型专业软件公司,如微软公司,都把它作为程序检查工具,在程序合入正试版本或交付测试之前一定要保证通过了LINT检查,他们要求软件工程师在使用LINT时要打 ...

  7. outlook 2003配置连接exchange server 2010报错——无法完成此操作。 与 Microsoft Exchange Server 的连接不可用。 Outlook 必须联机或连接才可完成该操作

    最近安装了一台Exchange 2013邮件服务器,但在客户端Outlook 2013手动配置邮箱时却发现了如下错误:   这里说一个简单的解决办法,实际上第一次启动Outlook时可以自动发现,只需 ...

  8. dataGuard client 自动切换

    使用dataguard作为HA方案,要解决的一个问题在于:后台数据库发生了切换,client连接如何做到自动切到新的primary数据库上? 如果做通用的方案,需要客户端自己提供自动重连的能力,这点大 ...

  9. Data visualization 课程 笔记3

    Learn how humans work to create a more effective computer interface 三种reasoning的方式  Deductive Reason ...

  10. 布线问题(prime)

    布线问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:1.把所有 ...