Foundation框架基础 NSMutableArray-可变数组

来源:互联网 发布:软件开发教程 编辑:程序博客网 时间:2024/06/09 19:01
#import<Foundation/Foundation.h>
#import"CZDog.h"
intmain(intargc, const char * argv[]) {
   
//  创建一个空的可变数组
//    NSMutableArray *arrayM  =  [NSMutableArray array];
// 创建的时候该数组可容纳的元素个数
  
//  通过一个不可变数组去设置一个可变得数组
   
CZDog *dog = [[CZDogalloc] init];
    dog.
name= @"xiaohei";
    dog.
age= 10;
   
CZDog *dog5 = [[CZDogalloc] init];
    dog5.
name= @"xiaohei";
    dog5.
age= 10;
   
CZDog *dog2 = [[CZDogalloc] init];
    dog2.
name= @"xiaohuang";
    dog2.
age= 11;
   
CZDog *dog3 = [[CZDogalloc] init];
    dog3.
name= @"xiaohong";
    dog3.
age= 6;
   
CZDog *dog4 = [[CZDogalloc] init];
    dog4.
name= @"xiaobai";
    dog4.
age= 6;
   
NSArray *array =@[dog,dog5,dog2,dog3,dog4];

   
NSMutableArray *arrayM = [NSMutableArrayarrayWithArray:array];
//  不能通过增强的for遍历的同时删除元素, 所有通过枚举器的方式都不可以遍历的同时删除
   
NSLog(@"%@",arrayM);
   
//  第一种方式变量找出要删除元素放到数组中,然后删除数组中得元素
   
NSMutableArray *temp = [NSMutableArrayarray];
   
for (CZDog*dog in arrayM) {
       
       
if ([dog.nameisEqualToString:@"xiaohong"]) {
//            [arrayM removeObject:dog];
            [temp
addObject:dog];
        }
    }
//  删除arrayM中的在temp中元素
    [arrayM
removeObjectsInArray:temp];
   NSLog(@"%@",arrayM);

//  第二种
   
for (intindex = 0; index < arrayM.count; index++) {
       
CZDog *dog = arrayM[index];
       
if ([dog.nameisEqualToString:@"xiaohei"]) {
            [arrayM
removeObjectAtIndex:index];
            index--;
//注意这里不要漏掉
        }
       
    }
   
NSLog(@"%@",arrayM);
   
   
return 0;
}


voidtest()
{
   
//  创建一个空的可变数组
   
//    NSMutableArray *arrayM  =  [NSMutableArray array];
   
// 创建的时候该数组可容纳的元素个数
   
NSMutableArray *arrayM = [NSMutableArrayarrayWithCapacity:10];
   
   
NSMutableArray *arrM = @[@"1",@"2"];//错误方式,@[@"1",@"2"];不可变数组
   
   
//   往数组中添加元素
    [arrayM
addObject:@"1"];
   
NSLog(@"%@",arrayM);
   
//  通过一个不可变数组去设置一个可变得数组
    arrayM.
array= @[@"1",@"2",@"3",@"1"];
   
NSLog(@"%@",arrayM);
   
//  在某个索引插入一个元素
    [arrayM
insertObject:@"a"atIndex:1];
   
NSLog(@"%@",arrayM);
   
//  删除元素,只要与这个 @"1" 相同,它是同过isEqual方法进行比较的
    [arrayM
removeObject:@"1"];
   NSLog(@"%@",arrayM);
}





CZDog.h

#import<Foundation/Foundation.h>

@interfaceCZDog : NSObject
//年龄
@property(nonatomic,assign)int age;
//姓名
@property(nonatomic,copy)NSString *name;
//叫
- (
void) bark;

- (
void) eat:(NSString*) food;

/**
 *  比较方法
 */

- (
NSComparisonResult) compare:(CZDog*) other;

@end



字符串

#import"CZDog.h"

@implementationCZDog

// 比较方法
 
- (NSComparisonResult) compare:(CZDog*) other
{
//  年龄优先
   
if(self.age== other.age){
         
return [self.namecompare:other.name];
    }
elseif(self.age> other.age){
       
return NSOrderedDescending;//降序
    }
else{
       
return NSOrderedAscending;//升序
    }
}

//叫
- (
void) bark{
   
NSLog(@"%@",self.name);
}

- (
void) eat:(NSString*) food
{
   
NSLog(@"%@ 吃 %@",self.name,food);
}

-(
BOOL)isEqual:(id)object
{
   
if (self== object) {
       
return YES;
    }
   
return [self.nameisEqualToString:[objectname]];
}

-(NSString*)description
{
   
return [NSStringstringWithFormat:@"CZDog name = %@,age = %d",_name,_age];
}

@end
0 0