#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