数字字符串和集合课件.ppt

上传人:sccc 文档编号:5342259 上传时间:2023-06-27 格式:PPT 页数:30 大小:440.51KB
返回 下载 相关 举报
数字字符串和集合课件.ppt_第1页
第1页 / 共30页
数字字符串和集合课件.ppt_第2页
第2页 / 共30页
数字字符串和集合课件.ppt_第3页
第3页 / 共30页
数字字符串和集合课件.ppt_第4页
第4页 / 共30页
数字字符串和集合课件.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《数字字符串和集合课件.ppt》由会员分享,可在线阅读,更多相关《数字字符串和集合课件.ppt(30页珍藏版)》请在三一办公上搜索。

1、数字、字符串和集合,数字对象,int、float等基本数据类型,不是对象,不能向它们发送消息。而Foundation的对象NSArray数组中不能将基本数据类型存储进来。NSNumber类可以创建数据对象。NSNumber的创建方法和检索方法,如下:,例:NSNumber*intNumber,*floatNumber;NSInteger myInt;intNumber=NSNumber numberWithInt:150;myInt=intNumber integerValue;NSLog(%li,(long)myInt);floatNumber=NSNumber alloc initWith

2、Float:123.456;NSLog(%g,floatNumber floatValue);,字符串对象,NSString类用于处理字符串对象,由unichar字符组成。NSConstantString常量字符串对象,是NSString类的子类。如:NSString*str=”Programming is fun”NSLog(”%”,str);,可变字符串与不可变字符串,NSString类处理不可变对象NSMutableString类处理可变对象例1 Nstring字符串:NSString*str1=This a string A;NSString*str2=This a string B;

3、NSString*res=NSString stringWithString:str1;str2=str1 stringByAppendingString:str2;if(str1 isEqualToString:res=YES)NSLog(str1=res);NSComparisonResult result=str1 compare:str2;if(result=NSOrderedAscending)NSLog(str1str2);res=str1 uppercaseString;NSLog(%s,res UTF8String);,res=str1 substringToIndex:4;N

4、SLog(First 4 chars of str1%,res);res=str1 substringFromIndex:4;NSLog(chars from index of 4 of str1:%,res);res=str1 substringFromIndex:8 substringToIndex:6;NSLog(chars from index 8 through 13:%,res);res=str1 substringWithRange:NSMakeRange(8,6);NSLog(chars from index 8 through 13:%,res);NSRange subRan

5、ge=str1 rangeOfString:String A;NSLog(string is at index%lu,length is%lu,subRange.location,subRange.length);subRange=str1 rangeOfString:String B;if(subRange.location=NSNotFound)NSLog(string not found);,例2:NSMutableString NSString*str1=This is string A;NSString*search,*replace;NSMutableString*mstr;NSR

6、ange substrRange;mstr=NSMutableString stringWithString:str1;mstr insertString:mutable atIndex:7;mstr insertString:and string B atIndex:mstr length;mstr appendString:and string C;mstr deleteCharactersInRange:NSMakeRange(16,13);,substrRange=mstr rangeOfString:string B and;if(substrRange.location!=NSNo

7、tFound)mstr deleteCharactersInRange:substrRange;mstr setString:This is string A;mstr replaceCharactersInRange:NSMakeRange(8,8)withString:a mutable string;search=This is;replace=An example of”;substrRange=mstr rangeOfString:search;,if(substrRange.location!=NSNotFound)mstr replaceCharactersInRange:sub

8、strRange withString:replace;search=a;replace=X”;substrRange=mstr rangeOfString:search;while(substrRange.location!=NSNotFound)mstr replaceCharactersInRange:substrRange withString:replace;substrRange=mstr rangeOfString:search;,数组对象,Foundation数组是有序的对象集合一个数组中的元素都是一个特定类型,但不是必需的存在可变数组NSMutableArray和不可变数组N

9、SArray要在程序中使用数组对象,应包括相应头文件#import NSArray*monthNames=NSArray arrayWithObjects:January,Febrary,March,April”,nil;NSLog(%,monthNames);,int i,p,prevPrime;BOOL isPrime;NSMutableArray*primes=NSMutableArray arrayWithCapacity:20;primes addObject:NSNumber numberWithInt:2;primes addObject:NSNumber numberWithI

10、nt:3;for(p=5;p=100;p+=2)isPrime=YES;i=1;,do prevPrime=(int)primes objectAtIndex:i integerValue;if(p%prevPrime=0)isPrime=NO;+I;while(isPrime=YES,示例:制作地址簿,第一步:生成一个地址卡片AddressCard类,仅包含姓名和email字段,设置卡片的姓名和email字段,检索这些字段的内容,并打印卡片。interface AddressCard:NSObject NSString*name;NSString*email;-(void)setName:(

11、NSString*)theName;-(void)setEmail:(NSString*)theEmail;-(NSString*)name;-(NSString*)email;-(void)print;end,-(void)setName:(NSString*)theName/name=theName;/name=NSString alloc initWithString:theName;/如果某人更改了卡片上的姓名,在使用新姓名代替旧姓名前,释放旧姓名所占用的内存 name release;name=NSString alloc initWithString:theName;,-(void

12、)print NSLog(=);NSLog(|%-31s|,name UTF8String);NSLog(|%-31s|,email UTF8String);/需要重载dealloc方法,在释放AddressCard对象的内存时,其成员的内存一并释放-(void)dealloc name release;email release;super dealloc;,修改AddressCard类,如下:interface AddressCard:NSObject NSString*name;NSString*email;property(nonatomic,copy)NSString*name,*e

13、mail;-(void)setName:(NSString*)thename andEmail:(NSString*)theEmail;end,implementation AddressCardsynthesize name,email;-(void)setName:(NSString*)thename andEmail:(NSString*)theEmail self.name=thename;self.email=theEmail;end,第二步,定义地址簿AddressBook类,存储地址簿的名字和一个AddressCard集合。可以创建新地址簿,向其添加地址卡片,计算地址簿的记录数,

14、列出地址簿的内容。后续功能:搜索地址簿,删除记录,编辑现有记录,将记录排序等,#import AddressCard.h;interface AddressBook:NSObject NSString*bookName;NSMutableArray*book;-(id)initWithName:(NSString*)name;-(void)addCard:(AddressCard*)theCard;-(int)entries;-(void)list;-(void)dealloc;end,implementation AddressBook-(id)initWithName:(NSString*

15、)name self=super init;if(self)bookName=NSString alloc initWithString:name;book=NSMutableArray alloc init;return self;,-(void)addCard:(AddressCard*)theCard book addObject:theCard;-(int)entries return(int)book count;-(void)list NSLog(=Contents of:%=,bookName);for(AddressCard*card in book)NSLog(%-20s%3

16、2s,card.name UTF8String,card.email UTF8String);,-(void)dealloc bookName release;book release;super dealloc;end,在地址簿中查找某人:-(AddressCard*)lookup:(NSString*)theName for(AddressCard*nextCard in book)if(nextCard name caseInsensitiveCompare:theName=NSOrderedSame)return nextCard;return nil;,在地址簿中删除某人-(void

17、)removeCard:(AddressCard*)theCard book removeObjectIdenticalTo:theCard;,词典对象,Dictionary是由键-对象组成的数据集合词典中的键必须是单值的,通常是字符串和键关联的值 可以是任何对象类型,不能为nil词典可以是固定的,也可以是可变的 NSDictionary*glossary1=NSDictionary dictionaryWithObjectsAndKeys:A class defined so other classes can inherit from it,abstract class,To implem

18、ent all the method defined in a protocol,adopt,storing an object for later use,archiving,nil;,NSMutableDictionary*glossary2=NSMutableDictionary dictionary;glossary2 setObject:A class defined so other classes can inherit from it forKey:abstract class;glossary2 setObject:To implement all the method de

19、fined in a protocol forKey:adopt;glossary2 setObject:storing an object for later use forKey:archiving;for(NSString*key in glossary2)NSLog(%,%,key,glossary2 objectForKey:key);,练习,1、修改AddressBook中的lookup:方法,使之能够找出name的部分匹配。消息表达式:myBook lookup:”steve”;应该匹配名称中任何位置包含字符串“steve”的记录2、修改lookup:方法,使之能够搜索地址簿所有

20、匹配的卡片,返回数组。3、在AddressCard类添加新字段:地址和电话号码字段。编写合适的setter和getter方法,并确保print方法和list方法能恰当地显示这些字段,4、给定以下声明:-(BOOL)removeName:(NSString*)theName;在AddressBook类中添加该方法,从地址簿中删除该用户名的记录。5、使用以前定义的Fraction分数类,根据任意一些值创建一个分数数组,编写代码计算数组中所有分数的和。6、定义三个新类:Song、PlayList和MusicCollection。Song对象包含歌曲信息:歌曲名、艺术家、专辑、歌曲长度等,PlayList对象包含播放列表名称和一个歌曲的集合,MusicCollection对象包含播放列表集合,它包括一个名为Library的主播放列表,这个列表包含该集合中的所有歌曲。,创建一个Song对象,并设置其信息创建一个PlayList对象,并对播放列表添加和删除歌曲。如果一首新歌不在主列表中,将其添加进去。确保从主播放列表中删除一首歌时,也要从音乐集合中的其他播放列表中删除此歌曲创建一个MusicCollection对象,并对该集合添加和删除播放列表搜索并显示关于所有歌曲、播放列表或整个音乐集合的信息。确保所有你定义的类都不产生内存漏洞。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号