iOS 开发 OC编程 数组冒泡排序.图书管理
//
// main.m
// oc -5 数组
//
// Created by dllo on 15/10/28.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Student.h"
#import "Book.h"
int main(int argc, const char * argv[]) {
Student *p = [Student studentWithName:@"yuhao" sex:@"m" age:23 score:100];
//不可变数组
//1创建&初始化
// NSArray *arr1 = [[NSArray alloc] initWithObjects:@"王宁", @"王博男", @"周瑜", @"魏冬冬", nil ];
//便利构造器
// NSArray *arr2 = [NSArray arrayWithObjects:@"王宁", @"王博男", @"周瑜", @"魏冬冬", nil ];
// NSArray *arr3 = [NSArray arrayWithArray:arr1];
//数组元素个数
// NSLog(@"%ld", arr1.count);
// for (NSInteger i = 0; i < arr1.count; i++) {
//NSLog(@"%@",arr1[i]);
//通过下标访问数组元素
/// NSLog(@"%@", [arr1 objectAtIndex:i]);
// }
// 通过对象值获取下标
// NSLog(@"%ld", [arr1 indexOfObject:@"王宁"]);
// 可变数组
//1 创建&初始化
NSMutableArray *arr5 = [NSMutableArray arrayWithObjects:@"王宁", @"王博男", @"周瑜", @"魏冬冬", nil ];
//常用便利构造器
NSMutableArray *arr6 = [NSMutableArray array];
//相当于int a[4] = {};
//2, 添加
[arr5 addObject:@"高帅"];
// 数组也是对象 不同类型也可以添加,只要是对象就可以.
[arr6 addObject:arr5];
for (NSInteger i = 0; i < arr6.count ; i++) {
// NSMutableArray * temp = [[ NSMutableArray alloc]init];
// /创建初始化分2步,第一步一个指针, 第二步 开辟空间, 在这我们不用重新开辟空间,我们只要用一个指针指向就可以了.在这在开辟空间会造成,泄露.因为该指针指向已经丢失,空间永远不被释放
NSMutableArray * temp = [arr6 objectAtIndex:i];
// for (NSInteger j = 0; j < [[arr6 objectAtIndex:i ] count]; j++) {
for (NSInteger j = 0; j < temp.count ; j++) {
NSLog(@"%@", [temp objectAtIndex:j]);
}
}
//点语法当返回值是id类型的时候,用点语法有可能会报错,要用get方法
//3 插入
// [arr5 insertObject:@"dssa" atIndex:2];
//4 删除
// [arr5 removeObject:@"王宁"];
// 实用删除最后一个
// [arr5 removeLastObject];
//5 替换
//将指定下标处的元素值替换为指定值
// [arr5 replaceObjectAtIndex:3 withObject:@"王宁宁"];
//6交换
// [arr5 exchangeObjectAtIndex:1 withObjectAtIndex:3];
//练习,冒泡排序
// NSMutableArray *arr5 = [NSMutableArray arrayWithObjects:@"1", @"2", @"4", @"3", nil ];
// for (NSInteger i = 0; i < arr5.count - 1; i++) {
// for (NSInteger j = 0; j < arr5.count - 1 - i; j++) {
// if (NSOrderedAscending ==[[arr5 objectAtIndex:j] compare:[arr5 objectAtIndex:j + 1]]) {
// // NSOrderedAscending 默认值为-1 结果为降序排列
// [arr5 exchangeObjectAtIndex:j withObjectAtIndex:j + 1];
// }
// }
// }
// for (NSInteger i = 0; i < arr5.count; i++) {
// NSLog(@"%@", [arr5 objectAtIndex:i]);
// }
// NSLog(@"%@", arr5);
//nslog在数组对象存的都是英文字符的情况下可以输出,在有中文的情况下输出会出错
// 练习 图书管理
// 1、使用可变数组管理所有书籍(定义Book类,包含书 名和价格)。
// 2、数组可以添加、删除书籍。 3、可以从数组根据书名查找书籍,并修改书籍的价格 4、展示所有书籍清单(书名)
// Book *str = [Book bookWithName:@"读者" price:10];
// Book *str1 = [Book bookWithName:@"意林" price:20];
// Book *str2 = [Book bookWithName:@"故事会" price:5];
// Book *str3 = [Book bookWithName:@"故事" price:7];
// NSMutableArray *arr6 = [NSMutableArray array];
// NSMutableArray *arr7 = [NSMutableArray arrayWithObjects:str, str1,str2, str3, nil];
// [arr6 addObjectsFromArray:arr7];
//// [arr6 addObject:str1];
//// [arr6 addObject:str2];
//// [arr6 addObject:str3];
// [arr6 removeObject:str2];
//添加,,删除书籍
// for (NSInteger i = 0; i < arr6.count; i++) {
// //Book *p = [arr6 objectAtIndex:i];
//
// // NSLog(@"%ld %@", [p price], [p name]);
// NSLog(@"%ld %@", [[arr6 objectAtIndex:i] price],[[arr6 objectAtIndex:i] name]);
//
// }
//找书修改价格
// for (NSInteger i = 0; i < arr6.count; i++) {
// if ([[[arr6 objectAtIndex:i] name] isEqualToString:@"读者"]) {
// [[arr6 objectAtIndex:i] setPrice:30];
// NSLog(@"%@ %ld",[[arr6 objectAtIndex:i] name], [[arr6 objectAtIndex:i] price] );
// }
// }
//
//价格冒泡排序
// for (NSInteger i = 0; i < arr6.count - 1; i++) {
// for (NSInteger j = 0; j < arr6.count - 1 - i; j++) {
//
// if ([[arr6 objectAtIndex:j] price] >[[arr6 objectAtIndex:j + 1] price] ) {
// [arr6 exchangeObjectAtIndex:j withObjectAtIndex:j + 1];
// }
// }
// }
// for (NSInteger i = 0; i < arr6.count; i++) {
// NSLog(@"%ld %@", [[arr6 objectAtIndex:i] price],[[arr6 objectAtIndex:i] name]);
//
// }
//思考,oc的封装特性.实现这道题
//值对象
int a = 1;
float b = 2.2;
//int转对象类型
NSNumber *c = [NSNumber numberWithFloat:b];
NSNumber *val = [NSNumber numberWithInt:a];
NSLog(@"%@",c);
NSLog(@"%@", val);
//对象类型转int
NSLog(@"%d", [val intValue]);
//结构体/指针类型转对象类型
NSRange range = {1,3};
NSValue *val1 = [NSValue valueWithRange:range];
NSLog(@"%@", val1);
//对象类型转结构体/指针类型
NSRange ret = [val1 rangeValue];
return 0;
}