//

//  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;

}

转载于:https://www.cnblogs.com/yuhaojishuboke/p/5043122.html

iOS 开发 OC编程 数组冒泡排序.图书管理相关推荐

  1. iOS 开发 OC编程 字典和集合 排序方法

    // //  main.m //  oc- 05 字典和集合 // //  Created by dllo on 15/10/29. //  Copyright (c) 2015年 dllo. All ...

  2. iOS 开发 OC编程 属性和字符串

    // //  main.m //  oc 04属性&字符串 // //  Created by dllo on 15/10/27. //  Copyright (c) 2015年 dllo. ...

  3. ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 ios开发雷达扫描的动画效果

    ios开发oc高仿京东金融白条额度余额的   ios开发水波纹   ios开发水正弦曲线波纹 直接上代码,复制粘贴就可以 vc里的 WaterRippleView *topView = [[Water ...

  4. ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 ios开发雷达扫描的动画效果...

    ios开发oc高仿京东金融白条额度余额的   ios开发水波纹   ios开发水正弦曲线波纹 直接上代码,复制粘贴就可以 vc里的 WaterRippleView *topView = [[Water ...

  5. iOS开发——OC篇常用问题解答(一)

    常用问题解答 1.设置 ImagePicker 的大小 ImagePicker 在 Popover Controller 总是以默认大小显示,设置 popoverContentSize 属性似乎无用. ...

  6. iOS开发 网络编程 Socket编程

    一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程 ...

  7. iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误

    在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握 ...

  8. (2022)Springboot+vue3项目开发前后端分离书法图书管理Coun

    项目地址:https://github.com/KKJava1/Coun Coun是基于Springboot+vue3 项目采用了前后端分离技术:后端采用 springBoot 基本框架,数据库连接池 ...

  9. iOS开发- OC之富文本

    之前做项目时遇到一个问题: 使用UITextView显示一段电影的简介,由于字数比较多,所以字体设置的很小,行间距和段间距也很小,一大段文字挤在一起看起来很别扭,想要把行间距调大,结果在XCode中查 ...

最新文章

  1. Java之——利用Comparator接口对多个排序条件进行处理
  2. Qt on android 蓝牙开发(控制小车)
  3. exchange和域得命名
  4. Echarts给坐标轴添加自定义属性
  5. 路由相关知识,静态路由、默认路由、浮动路由的概念以及基本设置
  6. Active Record 数据库迁移总结
  7. hibernate配置详情2(Dept.hbm.xml)
  8. [Swift]LeetCode113. 路径总和 II | Path Sum II
  9. Java集合Collection接口中的常用方法演示
  10. Work Stealing
  11. LATTICE FPGA 工具介绍之ACTIVE-HDL 建立工程及仿真步步来(2)
  12. 使用R制作世界热力地图
  13. Python教程之粒子运动轨迹动态绘图
  14. Matlab粒子群聚类程序
  15. JAVA常用遍历替换数据
  16. apache camel 相关配置_Apache Camel简介与入门-java
  17. 【Python】Python 可变对象和不可变对象
  18. Java判断手机号格式
  19. [嵌入式开发模块]AD转换芯片ADS8344驱动模块
  20. PDF417 (二维码)

热门文章

  1. Android:ViewPager为页卡内视图组件添加事件
  2. ASP.NET--Menu控件
  3. Lumen / Laravel 5.5 使用网易邮箱 SMTP 发送邮件
  4. MySQL 8.0 Invisible Indexes 和 RDS 5.6 Invisible Indexes介绍
  5. centos7上搭建http服务器以及设置目录访问
  6. Intel或将裁员数千人 谋求业务转型
  7. jQuery序列化表单
  8. 预编译 ASP.NET 网站以进行部署
  9. Utilize Sql Tuning Advisor from Script
  10. Cisco交换机解决网络蠕虫病毒***问题