OC - NSArrayAndNSMutableArray

来源:互联网 发布:外星人windows hello 编辑:程序博客网 时间:2024/06/05 18:58
<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

0 0
原创粉丝点击