OC - NSArrayAndNSMutableArray

<main.m>
#import <Foundation/Foundation.h>
#import "Book.h"


int main(int argc, const char * argv[])
{

    @autoreleasepool {
        
        //nsarray 是存放对象的
        
        //创建三个对象
        NSString *meiZu = [[NSString alloc ]initWithFormat:@"MeiZu"];
        NSString *xiaoMi = [[NSString alloc]initWithFormat:@"xiaoMi"];
        NSString *apple =[[NSString alloc] initWithFormat:@"Apple"];
        
        //NSArray
        //initWithObjects: 方法,需要传入多个对象,这些对象之间以","隔开,最后以 nil 结尾
        //!!!!!   nil 之后的对象不在存入数组
        NSArray *array = [[NSArray alloc] initWithObjects: apple,meiZu,xiaoMi,nil];
        NSLog(@"%@",array);
        
       
        //通过下标找到对象
        NSString *who = [array objectAtIndex:0];
        NSLog(@"%@",who);
        //通过对象找下标
        //如果在输入对象的地方输入 array 这个数组的地址,则会输出第一个符合对象的下标,并返回
        NSInteger index = [array indexOfObject:meiZu];
        NSLog(@"%ld",index);
        
        //数组元素个数
        NSInteger count = [array count];
        NSLog(@"count = %ld",count);
        
        //遍历
        for (int i = 0; i < [array count]; i++)  //在此也可以用 array.count ,所以说它使一个 getter 方法
        {
            NSLog(@"%@",[array objectAtIndex:i]);
        }
        
        
        //排序
        NSArray *sortedArr = [array sortedArrayUsingSelector:@selector(compare:)];//compare:就是比较的方法
        NSLog(@"%@",sortedArr);
        
        
        
        
//        
//        
//        
//// NSMutableArray
//        NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithObjects:apple,meiZu, nil];
//        
//        //添加
//        [mutableArray addObject:xiaoMi];
//        NSLog(@"%@",mutableArray);
//        
//        //删除
//        //根据下标删除
//        [mutableArray removeObjectAtIndex:1];
//        NSLog(@"%@",mutableArray);
//        
//        //根据对象删除
//        [mutableArray addObject:meiZu];
//        [mutableArray addObject:meiZu];
//        [mutableArray addObject:meiZu];
//        NSLog(@"%@",mutableArray);
//        //在移除时需要注意的是,最好用下标的方式,因为下标是具有唯一性的.如果用对象名的时候可能会有多个匹配的对象都会遭到删除.
//        [mutableArray removeObject:meiZu];
//        NSLog(@"%@",mutableArray);
//        
//        //交换
//        [mutableArray exchangeObjectAtIndex:0 withObjectAtIndex:1];
//        NSLog(@"%@",mutableArray);
//        
//        
//        //排序
//        
//        NSString *str1 = @"aa";
//        NSString *str2 = @"bb";
//        NSString *str3 = @"cc";
//        NSString *str4 = @"dd";
//        NSString *str5 = @"ee";
//        
//        NSMutableArray *arr = [[NSMutableArray alloc] initWithObjects:str3,str4,str5,str1,str2, nil];
//        NSLog(@"%@",arr);
//        
//        for (int i = 0 ; i < arr.count - 1; i++) {
//            for (int j = 0 ; j < arr.count - i - 1; j++) {
//               //获取数组元素
//                NSString *a = [arr objectAtIndex:j];
//                NSString *b = [arr objectAtIndex:j + 1];
//                if ([a compare:b] > 0) {
//                    [arr exchangeObjectAtIndex:j withObjectAtIndex:j + 1];
//                }
//            }
//        }
//        NSLog(@"%@",arr);
//        
//        
//        //封装好的排序方法
//        [arr sortUsingSelector:@selector(compare:)];
//        NSLog(@"%@",arr);
//        
//       //获取第一个对象
//        [arr firstObject];
//        //获取最后一个对象
//        [arr lastObject];
//        
//        
//        
//   //图书管理
//        //1.使用数组管理所有书籍
//        //2.数组可以添加删除
//        //3.可以从数组根据书名查找书籍,并修改书籍的价格
//        //4.展示所有书籍的清单
//        
//        
//       //创建三本书对象
//        
//        Book *chinese = [[Book alloc] initWithBookName:@"Chinese" price:25.8];
//        Book *math = [[Book alloc] initWithBookName:@"Math" price:36.2];
//        Book *english = [[Book alloc ] initWithBookName:@"English" price:49.9];
//        
//        //创建可变数组管理书籍
//        NSMutableArray *library = [[NSMutableArray alloc] initWithObjects:chinese,math, nil];
//        //添加书籍
//        [library addObject:english];
//        NSLog(@"%@",library);
//        
//        //添加音乐书籍
//        Book *music = [[Book alloc] initWithBookName:@"Music" price:100];
//        [library addObject:music];
//        NSLog(@"%@",library);
//      //删除书籍
//        [library removeObject:english];
//        NSLog(@"%@",library);
//        
//      
//        //查找书籍
//        for (int i = 0; i < [library count]; i++) {
//            //找到数组中的 book 对象
//            Book *book = [library objectAtIndex:i];
//            if ([[book bookName] isEqualToString:@"Chinese"] ) {
//                book.price = 200;
//                
//            }
//        }
//        NSLog(@"%@",library);
//        
//        
//        //遍历打印清单
//        
//        for (int i = 0; i < [library count]; i++) {
//            NSLog(@"%@",[library objectAtIndex:i]);
//        }
//        //NSLog(@"%@",library); 和上面那个打印是不同的 ,因为下面这个是打印 library 里面的一整串的字符数据,而上面的是遍历循环打印每个对象的数据进行打印
//        
//        
//        
//        
//        
//        
//        
//        
         
        
    }
    return 0;
}


<Book.h>

#import <Foundation/Foundation.h>

@interface Book : NSObject
{
    NSString *_bookName;
    CGFloat _price;
}
-(id)initWithBookName:(NSString *)bookName price:(CGFloat)price;

//setter getter
-(void)setBookName:(NSString *)bookName;
-(NSString *)bookName;


-(void)setPrice:(CGFloat)price;
-(CGFloat)price;


//重写 description    规定了对象的输出的格式,这个方法是本来就有的只是重写了一下,在 NSLog 调用时自动调用执行这个
-(NSString *)description;


@end

<Book.m>

#import "Book.h"

@implementation Book

-(id)initWithBookName:(NSString *)bookName price:(CGFloat)price
{
    if ([super init]) {
        _bookName = bookName;
        _price = price;
    }return self;
}

//setter getter
-(void)setBookName:(NSString *)bookName
{
    _bookName = bookName;
}
-(NSString *)bookName
{
    return _bookName;
}


-(void)setPrice:(CGFloat)price
{
    _price = price;
}
-(CGFloat)price
{
    return _price;
}


-(NSString *)description
{
    return [NSString stringWithFormat:@"bookName:%@  price:%.2f",_bookName,_price];
}

@end

你可能感兴趣的:(数组,NSArray,NSMutableArray,数组增查改删排序,数组方法)