91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS關于數組的那些小菜菜

發布時間:2020-07-27 22:45:30 來源:網絡 閱讀:599 作者:卓行天下 欄目:移動開發

  



//刪除數組

    [areaArr removeAllObjects];

    [industryArr removeAllObjects];

    [natureArr removeAllObjects];


NSMutableDictionary來保存名片記錄。那么這一次,我們擴展,并使用NSMutableArray來保存菜單信息。

那么,我們將在AddressBook類中加入相關的屬性。

AddressBook.h 文件中加入:

NSMutableArray *_bookArray;

 

@property(nonatomic,copy) NSMutableArray *bookArray;

AddressBook.m 文件中加入:

@synthesize bookArray=_bookArray;生成相應的getset方法。

修改響應初始化的方法來完成初始化:

 

 

- (id)initWithName:(NSString *)name{

    self=[super init];

    if (self) {

        _bookName=[[NSString alloc] initWithString:name];

        _bookArray=[[NSMutableArray alloc] init];

        _bookDictionary=[[NSMutableDictionary alloc] init];

        

    }

    return self;


}


下面,就開始響應的NSMutableArray類的操作。

加入元素到NSMutableArray中:

 

- (void)addCardForArray:(AddressCard *)newCard{

    [_bookArray addObject:newCard];


}

使用時:

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];

        

    }


}

使用時:

 

[myBook printBookForArray];// 輸出元素


查詢NSMutableArray中的元素:

 

- (AddressCard *)findCardForArray:(NSString *)theName{

    for (AddressCard *theCard in _bookArray) {

        if ([[theCard name] caseInsensitiveCompare:theName]==NSOrderedSame) {

            return theCard;

        }

    }

    return Nil;


}

使用時:

    

    AddressCard *theCard= [myBook findCardForArray:@"Tom"];// 查找

    if (theCard!=Nil) {

        [theCard print];

    }else{

        NSLog(@"No have");

    }


刪除NSMutableArray中的元素(一):


 

- (void)removeCardForArray:(AddressCard *)theCard{

    [_bookArray removeObjectIdenticalTo:theCard];


}


使用時:先查找,再刪除

AddressCard *theCard= [myBook findCardForArray:@"Tom"];// 查找

    if (theCard!=Nil) {

        [myBook removeCardForArray:theCard];// 刪除元素

    }else{

        NSLog(@"No have");

    }

    

用這個方法,刪除的對象為同一對象。

什么時同一對象?方法備注中已經說明。

所以,用removeObjectIdenticalTo方法,無法刪除那些,屬性值都相同,但是占有不同空間的對象。

不信,可以親自試一試!

 

[myBook printBookForArray];// 輸出元素

    AddressCard *removedCard=[[AddressCard alloc] init];

    // 申明一個新的Card對象,該對象與card1,具有相同的值,但是占有不同的內存

    [removedCard setName:aName andEmail:aEmail andSalary:aSalary];

    

    

    [myBook removeCardForArray:removedCard];// 刪除元素

    [myBook printBookForArray];// 輸出元素


通過,輸出可以說明,并沒有刪除啊!

那我們要問?我只需要屬性值相等,就可以刪除。怎么辦?

那就開始下邊的操作把!


刪除NSMutableArray中的元素(二):    

 

- (void)removeCardByisEqualForArray:(AddressCard *)theCard{

    [_bookArray removeObject:theCard];


}


方法中提到,要重載isEqual方法。

因為我們要進行比較的元素是AddressCard;所以,在AddressCard類中重載isEqual方法:

 

- (BOOL)isEqual:(AddressCard *)theCard{

    if ([_name isEqualToString:theCard.name]==YES &&

        [_email isEqualToString:theCard.email]==YES) {

        return YES;

    }else{

        return NO;

    }


}


使用時:

[myBook removeCardByisEqualForArray:removedCard];// 刪除元素


首先,調用AddressCard類中重載isEqual方法,比較元素是否相等;相等則會刪除;否則不刪除。


順便提及一下:

 

containsObject方法和indexOfObject方法都是通過isEqual方法的比較結果來進行查找的。這兩個方法,就不詳細說明了。


NSMutableArray中元素的排序:


 

- (void) sortBySalarysForArray{

    [_bookArray sortUsingSelector:@selector(compareBySalary:)];

}


AddressCard類中,編寫compareBySalary方法

 

- (NSComparisonResult) compareBySalary:(id)element{

    if (salary>[element salary]) {

        return NSOrderedDescending;

    }else if (salary<[element salary]) {

        return NSOrderedAscending;

    }else{

        return NSOrderedSame;

    }

}



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华安县| 鄯善县| 房产| 石狮市| 福建省| 东乌珠穆沁旗| 岑溪市| 邓州市| 敖汉旗| 津市市| 阜城县| 长葛市| 磴口县| 济南市| 泾阳县| 葫芦岛市| 肇庆市| 林芝县| 七台河市| 石城县| 大渡口区| 阿克苏市| 辽阳县| 杭锦后旗| 建瓯市| 岢岚县| 丹东市| 廊坊市| 乌鲁木齐市| 五大连池市| 东平县| 北宁市| 临沧市| 青阳县| 静海县| 陆川县| 时尚| 郧西县| 岚皋县| 黎川县| 郁南县|