成都創(chuàng)新互聯(lián)于2013年開(kāi)始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元尼開(kāi)遠(yuǎn)做網(wǎng)站,已為上家服務(wù),為尼開(kāi)遠(yuǎn)各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
//刪除數(shù)組
[areaArrremoveAllObjects];
[industryArrremoveAllObjects];
[natureArrremoveAllObjects];
用NSMutableDictionary來(lái)保存“名片”記錄。那么這一次,我們擴(kuò)展,并使用NSMutableArray來(lái)保存“菜單”信息。
那么,我們將在AddressBook類中加入相關(guān)的屬性。
AddressBook.h 文件中加入:
NSMutableArray *_bookArray;
@property(nonatomic,copy) NSMutableArray *bookArray;
在AddressBook.m 文件中加入:
@synthesize bookArray=_bookArray;生成相應(yīng)的get,set方法。
修改響應(yīng)初始化的方法來(lái)完成初始化:
- (id)initWithName:(NSString *)name{
self=[super init];
if (self) {
_bookName=[[NSString alloc] initWithString:name];
_bookArray=[[NSMutableArray alloc] init];
_bookDictionary=[[NSMutableDictionary alloc] init];
}
return self;
}
下面,就開(kāi)始響應(yīng)的NSMutableArray類的操作。
加入元素到NSMutableArray中:
- (void)addCardForArray:(AddressCard *)newCard{
[_bookArray addObject:newCard];
}
使用時(shí):
NSString *aName=[[NSString alloc] initWithString:@"Tom"];
NSString *aEmail=[[NSString alloc] initWithString:@"Tom@yahoo.cn"];
int aSalary=1000;
NSString *bName=[[NSString alloc] initWithString:@"LiLei"];
NSString *bEmail=[[NSString alloc] initWithString:@"LiLei@yahoo.cn"];
int bSalary=1100;
NSString *cName=[[NSString alloc] initWithString:@"Lucy"];
NSString *cEmail=[[NSString alloc] initWithString:@"Lucy@yahoo.cn"];
int cSalary=900;
NSString *dName=[[NSString alloc] initWithString:@"HanMeimei"];
NSString *dEmail=[[NSString alloc] initWithString:@"HanMeimei@yahoo.cn"];
int dSalary=1300;
AddressCard *card1=[[AddressCard alloc] init];
AddressCard *card2=[[AddressCard alloc] init];
AddressCard *card3=[[AddressCard alloc] init];
AddressCard *card4=[[AddressCard alloc] init];
[card1 setName:aName andEmail:aEmail andSalary:aSalary];
[card2 setName:bName andEmail:bEmail andSalary:bSalary];
[card3 setName:cName andEmail:cEmail andSalary:cSalary];
[card4 setName:dName andEmail:dEmail andSalary:dSalary];
AddressBook *myBook=[[AddressBook alloc] init];
[myBook initWithName:@"MyBook"];
[myBook addCardForArray:card1];// 添加元素
[myBook addCardForArray:card2];
[myBook addCardForArray:card3];
[myBook addCardForArray:card4];
遍歷NSMutableArray中的元素:
- (void)printBookForArray{
for (AddressCard *theCard in _bookArray) {
[theCard print];
}
}
使用時(shí):
[myBook printBookForArray];// 輸出元素
查詢NSMutableArray中的元素:
- (AddressCard *)findCardForArray:(NSString *)theName{
for (AddressCard *theCard in _bookArray) {
if ([[theCard name] caseInsensitiveCompare:theName]==NSOrderedSame) {
return theCard;
}
}
return Nil;
}
使用時(shí):
AddressCard *theCard= [myBook findCardForArray:@"Tom"];// 查找
if (theCard!=Nil) {
[theCard print];
}else{
NSLog(@"No have");
}
刪除NSMutableArray中的元素(一):
- (void)removeCardForArray:(AddressCard *)theCard{
[_bookArray removeObjectIdenticalTo:theCard];
}
使用時(shí):先查找,再刪除
AddressCard *theCard= [myBook findCardForArray:@"Tom"];// 查找
if (theCard!=Nil) {
[myBook removeCardForArray:theCard];// 刪除元素
}else{
NSLog(@"No have");
}
用這個(gè)方法,刪除的對(duì)象為同一對(duì)象。
什么時(shí)同一對(duì)象?方法備注中已經(jīng)說(shuō)明。
所以,用removeObjectIdenticalTo方法,無(wú)法刪除那些,屬性值都相同,但是占有不同空間的對(duì)象。
不信,可以親自試一試!
[myBook printBookForArray];// 輸出元素
AddressCard *removedCard=[[AddressCard alloc] init];
//申明一個(gè)新的Card對(duì)象,該對(duì)象與card1,具有相同的值,但是占有不同的內(nèi)存
[removedCard setName:aName andEmail:aEmail andSalary:aSalary];
[myBook removeCardForArray:removedCard];// 刪除元素
[myBook printBookForArray];// 輸出元素
通過(guò),輸出可以說(shuō)明,并沒(méi)有刪除?。?/p>
那我們要問(wèn)?我只需要屬性值相等,就可以刪除。怎么辦?
那就開(kāi)始下邊的操作把!
刪除NSMutableArray中的元素(二):
- (void)removeCardByisEqualForArray:(AddressCard *)theCard{
[_bookArray removeObject:theCard];
}
方法中提到,要重載isEqual方法。
因?yàn)槲覀円M(jìn)行比較的元素是AddressCard;所以,在AddressCard類中重載isEqual方法:
- (BOOL)isEqual:(AddressCard *)theCard{
if ([_name isEqualToString:theCard.name]==YES &&
[_email isEqualToString:theCard.email]==YES) {
return YES;
}else{
return NO;
}
}
使用時(shí):
[myBook removeCardByisEqualForArray:removedCard];// 刪除元素
首先,調(diào)用AddressCard類中重載isEqual方法,比較元素是否相等;相等則會(huì)刪除;否則不刪除。
順便提及一下:
containsObject方法和indexOfObject方法都是通過(guò)isEqual方法的比較結(jié)果來(lái)進(jìn)行查找的。這兩個(gè)方法,就不詳細(xì)說(shuō)明了。
NSMutableArray中元素的排序:
- (void) sortBySalarysForArray{
[_bookArray sortUsingSelector:@selector(compareBySalary:)];
}
在AddressCard類中,編寫(xiě)compareBySalary方法
- (NSComparisonResult) compareBySalary:(id)element{
if (salary>[element salary]) {
return NSOrderedDescending;
}else if (salary<[element salary]) {
return NSOrderedAscending;
}else{
return NSOrderedSame;
}
}
文章名稱:iOS關(guān)于數(shù)組的那些小菜菜
文章鏈接:http://aaarwkj.com/article38/gdgspp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、小程序開(kāi)發(fā)、用戶體驗(yàn)、面包屑導(dǎo)航、關(guān)鍵詞優(yōu)化、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)