您的位置:首页 > 移动开发 > IOS开发

iOS培训第四周第三5天(OC第5讲)

2015-11-06 18:55 453 查看
昨天老师出去讲座了,东西没讲完,补在今天了,还是全部粘贴吧

//

// main.m

// 第四周第四天OC第五讲

//

// Created by scjy on 15/11/5.

// Copyright (c) 2015年第四周. All rights reserved.

//

//
第四周第三天OC第四讲

// 字典类 {集合类 数组,字典,集合的快速遍历
数组排序}

#import <Foundation/Foundation.h>

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

@autoreleasepool {

// insert code here...

NSLog(@"Hello, World!");



//字典类

/*

字典用于保存具有映射关系(key-value)的数据集合


对于name:张三来讲,name就是key,key对应的value就是张三


一个key-value的组合被认为是一个条目,字典是存储key-value对容器




字典类的特点:

与数组不同,字典靠key存取元素(数组是通过下标来存取元素)

key不能重复,value必须是对象(如果不是对象用 NSNumber,NSValue)

键值对在字典中是无序存储的

字典也分可变字典和不可变字典

不可变字典:字典一旦创建,键值不能更改,不可添加,不可删除,仅能读取key或value

可变字典:字典创建后,键值可以更改,可以添加,可以删除,也能读取key或value

字典中元素是成对出现的,不能出现单数个(键值对键值对,有键有值是一对)






吃饭睡觉打键盘

*/



//创建字典 NSDictionary



// NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:

// @"BenZ",@"car1",

// @"zhang",@"car2",

// @"吃饭",@"car3",

// @"睡觉",@"car4",

// @"打豆豆",@"car5",

// @"其实是打键盘",@"car6",nil];



// //获取字典元素个数

// NSUInteger count = dic.count;

// NSLog(@"count = %lu",count);

//

////获取所有key值

// NSArray *allkeyArray = dic.allKeys;

//

// for (int i = 0; i<allkeyArray.count; i++) {

// NSLog(@"allkeyArray[%d] = %@",i,[allkeyArray objectAtIndex:i]);

// }

// // NSLog (@"%@",[dic allKeys]);

//

//

////获取所有value值

// NSArray *allvaluesArray = dic.allValues;

//

// for (int i = 0; i<allvaluesArray.count; i++) {

// NSLog(@"allvaluesArray[%d] = %@",i,[allvaluesArray objectAtIndex:i]);

// }

// NSLog (@"%@",[dic allValues]);

//

//

// //通过key查询value值

// NSString *car1 = [dic valueForKey:@"car1"];

// NSLog(@"car = %@",car1);

//

// NSString *car2 = [dic valueForKey:@"car2"];

// NSLog(@"car = %@",car2);

//



//可变字典

// 初始化方法

// NSMutableDictionary *mDictionary = [[NSMutableDictionary alloc]initWithObjectsAndKeys:

// @"BenZ",@"car1",

// @"zhang",@"car2",

// @"吃饭",@"car3",

// @"睡觉",@"car4",

// @"打豆豆",@"car5",

// @"其实是打键盘",@"car6",nil];



//使用已经存在的不可变字典初始化一个新的可变字典

// NSMutableDictionary *mDic1 = [[NSMutableDictionary alloc]initWithDictionary:dic];

//

// //使用便利构造器方法创建一个新的空的可变字典

// NSMutableDictionary *mDic2 = [NSMutableDictionary dictionary];

//

//增删改



// //添加键值对

// //高冷是key,逗比是value

// [mDictionary setObject:@"doubi" forKey:@"gaoleng"];

// NSLog(@"%@",mDictionary);





//修改key对应的value



// [mDictionary setObject:@"shifou" forKeyedSubscript:@"car2"];

// NSLog(@"%@",mDictionary);

//

// [mDictionary setObject:@"shifou" forKeyedSubscript:@"car7"];

// NSLog(@"%@",mDictionary);

//

// //setValue: forValue:什么时候添加键值对,什么时候修改键值对?

// //当字典中没有这个key的时候,setValue: forValue:就是添加新的键值对

// //当字典中有这个key的时候,setValue: forValue:就是修改当前key对应的Value值

//

//

// //删除键值对

// [mDictionary removeObjectForKey:@"car3"];

// NSLog(@"%@",mDictionary);



// //遍历键值对

// NSArray *array10=[mDictionary allKeys];

// for (int i=0; i<array10.count; i++) {

// NSLog(@"%@ %@",[mDictionary valueForKey:array10[i]], array10[i]);

// }



//遍历键值对方法2

// NSArray *keyarray = [mDictionary allKeys];

// for (int j = 0; j<keyarray.count; j++) {

// NSLog(@"key = %@ value = %@",keyarray[j],[mDictionary valueForKey:keyarray[j]]);

// }

//



//可以同时删除多个键值对方法

// NSArray *arrayKeys=[NSArray arrayWithObjects:@"car3",@"car4",@"car5",@"car6", nil];

// [mDictionary removeObjectsForKeys:arrayKeys];

// NSLog(@"%@",mDictionary);



//创建字典,里边包含班级的各个小组,每个小组中又包含这组所有成员的名字。





//创建班级字典



//老师的程序



// NSMutableArray *group1 = [[NSMutableArray alloc] initWithObjects:@"小敏",@"王雪娟",@"郭飞飞",@"秦俊珍",
nil];

// NSMutableArray *group2 = [[NSMutableArray alloc] initWithObjects:@"范芳芳",@"刘海燕",@"张衡",@"李书明",
nil];

// NSMutableArray *group3 = [[NSMutableArray alloc] initWithObjects:@"佳慧",@"张鹏飞",@"乔自朋",@"李志鹏"
,nil];

// NSMutableArray *group4 =[[NSMutableArray alloc] initWithObjects:@"韩苇棋",@"练晓俊",@"郭亚茹",@"马娟娟"
,nil];

// NSMutableDictionary *class = [[NSMutableDictionary alloc] init];

// [class setValue:group1 forKey:@"第一组"];

// [class setValue:group2 forKey:@"第二组"];

// [class setValue:group3 forKey:@"第三组"];

// [class setValue:group4 forKey:@"第四组"];

// NSArray *class1 = [class allKeys];

// for (int i = 0; i < class1.count; i++) {

// //通过key值取出字典里对应的value(各小组数据)

// NSArray *groupArray = [class valueForKey:class1[i]];

// for (int j = 0; j < groupArray.count; j++) {

// //通过下标访问数组里面的每一个元素

// if (j < groupArray.count) { //防止数组越界访问,导致程序崩溃,只有j小于数组元素时候才能去访问数组元素

//

// NSLog(@"%@ %@", class1[i],groupArray[j]);

// }

//

// }

//

// }

//

//张鹏飞的程序:

// NSArray *team=[[NSArray alloc]initWithObjects:@"team1",@"team2",@"team3",@"team4", nil];

// NSArray *Members=[[NSArray alloc]initWithObjects:nil];

// NSLog(@"小组:..");

// for (int i=0; i<team.count; i++) {

// NSMutableDictionary *group1=[[NSMutableDictionary alloc]initWithObjectsAndKeys:team[i],@"小组1", nil];

// NSLog(@"%@",[group1 valueForKey:@"小组1"]);

// }

// for (int i=0; i<Members.count; i++) {

// NSMutableDictionary *group1=[[NSMutableDictionary alloc]initWithObjectsAndKeys:Members[i],@"小组1", nil];

// NSLog(@"%@",[group1 valueForKey:@"小组1"]);

// }



//郭亚茹的程序

// NSArray *x = [[NSArray alloc] initWithObjects:@"妮妮",@"露露",@"小花",
nil];

// NSArray *x1 = [[NSArray alloc] initWithObjects:@"妮可妮",@"露可露",@"小可花",
nil];

// NSArray *x2 = [[NSArray alloc] initWithObjects:@"妮啦妮",@"露啦露",@"小啦花",
nil];

//

//

// NSMutableDictionary *class = [[NSMutableDictionary alloc] initWithObjectsAndKeys:x,@"小花组",x1,@"可可组",x2,@"啦啦组",
nil];

//

// NSArray *allkey1= [class allKeys];

// for (int j=0; j <allkey1.count; j++) {

// for ( int i =0; i < x.count; i++) {

// NSLog(@"key = %@ ,value= %@ ",allkey1[j],[[class valueForKey:allkey1[j]] objectAtIndex:i]);

// }

//

// }

//



/*******************从网上找的,是正确的*******************



// //向字典中添加value和key

// [mDictionary setValue:@"valueZHI" forKey:@"keyZHI"];

// NSLog(@"%@",mDictionary);

//

// //向一个字典中添加一个字典

//

// NSDictionary *dict4=[NSDictionary dictionaryWithObject:@"value6" forKey:@"key6"];

// [mDictionary addEntriesFromDictionary:dict4];

// NSLog(@"%@",mDictionary);

//

// //向字典中添加value和key

// [mDictionary setValue:@"valueZHI" forKey:@"keyZHI"];

// NSLog(@"%@",mDictionary);

//

//

// //删除元素

//

// //移除指定key的value值

// [mDictionary removeObjectForKey:@"car1"];

// NSLog(@"%@",mDictionary);

//

//

// //删除一组key的value值

// NSArray *arrayKeys=[NSArray arrayWithObjects:@"car1",@"car2",@"car3", nil];

// [mDictionary removeObjectsForKeys:arrayKeys];

// NSLog(@"%@",mDictionary);



**************************************/



//改动元素







//集合//

/*

iOS中也有表示数学中集合的类,叫做NSSet

特点:存储的元素唯一,元素无序,元素必须是对象类型(如果是基本数据类型需要通过NSNumber,NSValue转化为对象类型),iOS中用set表示集合,分NSSet和NSMutableSet

*/



// NSSet *set = [[NSSet alloc]initWithObjects:@"史蒂夫",@"保罗",@"乔布斯",@"求知若饥",@"虚心若愚",@"Steve",@"Jobs",
nil];

//

// //获取集合元素个数,重复的元素会被覆盖,只算一个

// NSLog(@"set.count = %lu",set.count);

//// NSLog(@set.count = "%lu",(unsigned long)set.count);

//

// //获取集合值某个对象,有的话输出,没的话为空

// NSString *name = [set member:@"Jobs"];

// NSLog(@"name = %@",name);

//

// //判断集合中是否有某个对象

// BOOL isHaveChen = [set containsObject:@"Jobs"];

// NSLog(@"%d",isHaveChen);

//

// BOOL isHavejiao = [set containsObject:@"阿娇"];

// NSLog(@"%d",isHavejiao);



//allObjects返回集合中所有的元素

// NSArray *allObjArray = [set allObjects];

// for (int = 0; i<allObjArray.count; i++) {

// NSLog(@"%@",allObjArray[i]);

// }



//anyObject返回集合中一个元素,(第一次是随机的,以后每次都返回这个)



// NSLog(@"anyObject=====%@",[set anyObject]);

//

//

// /****NSMutableSet****/

// NSMutableSet *must = [[NSMutableSet alloc]initWithObjects:@"123",@"456",@"789",@"000", nil];

//

// //添加元素

// [must addObject:@"jjjj"];

// //删除

// [must removeObject:@"123"];









/****NSCountedSet****/



// NSCountedSet *countSet = [[NSCountedSet alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"0",@"1",@"1",@"1", nil];

//

// NSLog(@"count ===== %lu",countSet.count);



//countForObject计算某个元素在集合内出现的次数

// NSInteger ajcount = [countSet countForObject:@"1"];

// NSLog(@"count = %lu",ajcount);



// //集合类型的快速枚举

// NSArray *quickArray = [NSArray arrayWithObjects:@"zhao",@"qian",@"sun",@"li",@"zhou",@"wu",@"zheng",@"wang",nil];

//

// //右边是集合,左边是集合中元素的类型(类型?觉得是列举出来的元素吧)

// for (NSString *strobj in quickArray) {

// NSLog(@"strobj = %@",strobj);

// }

//

// //字典的快速枚举

// NSDictionary *quickdic = [NSDictionary dictionaryWithObjectsAndKeys:@"feng",@"chen",@"chu",@"wei",@"jiang",@"shen",@"han",@"yang", nil];

// //右边是被枚举的对象,左边是枚举出来对象的类型(同上)

// for (NSString *aaa in quickdic) {

// NSLog(@"aaa = %@",aaa);//(aaa就是key)

// NSLog(@"value = %@",[quickdic valueForKey:aaa]);

// }

// //对比,用for循环输出字典key值

// NSArray *quickkeys = quickdic.allKeys;

// for (int i = 0; i < quickkeys.count; i++) {

// NSLog(@"aaa ====== %@",[quickkeys objectAtIndex:i]);

// }

//

// //快速枚举集合

//

// NSSet *quickset = [NSSet setWithObjects:@"zhu",@"qin",@"you",@"xu", nil];

// for (NSString *strobj in quickset) {

// NSLog(@"strobj = %@",strobj);

// }

//

// //问题:假如一个不知道类型和元素个数的集合,如何快速枚举

// for (id obj in quickset) {//id可代指所有对象类型,不具体指哪一种,格式转化符:%@。

// NSLog(@"%@",obj);

// }

//



/********数组排序*********/



//冒泡排序

//之C语言

int count;

int a[10]={};



for (int i = 0; i<10; i++) {

a[i]=arc4random()%(30-10+1)+10;

}

count = sizeof(a)%sizeof(5);



for (int i=0; i<9; i++) {

for (int j=0; j<9-i; j++) {

int n;

if (a[j] > a[j+1]) {

n = a[j];

a[j]=a[j+1];

a[j+1]=n;

}

}

}

for (int i=0; i<10; i++) {

NSLog(@"a[%d]=%d",i,a[i]);

}



//OC数组的排序

/*通过OC数组冒泡排序,数组元素是整形的值*/



NSMutableArray *sortarray = [NSMutableArrayarrayWithObjects:

[NSNumbernumberWithInt:0] ,

[NSNumbernumberWithInt:1],

[NSNumbernumberWithInt:2],

[NSNumbernumberWithInt:8],

[NSNumbernumberWithInt:10],

[NSNumbernumberWithInt:16],

[NSNumbernumberWithInt:128],

[NSNumbernumberWithInt:256],

[NSNumbernumberWithInt:512],

[NSNumbernumberWithInt:1024],nil];

for (int i = 0; i<sortarray.count - 1; i++) {



for (int j= 0; j<sortarray.count - 1-i; j++) {

//1

NSNumber *num1 = [sortarrayobjectAtIndex:j];

int numInt1 = [num1intValue];



NSNumber *num2 = [sortarrayobjectAtIndex:j];

int numInt2 = [num2intValue];



if (numInt1>numInt2) {

[sortarray
exchangeObjectAtIndex:j withObjectAtIndex:j+1];

}



//2简化写法

/*

if ([sortarray[j] intValue] > [sortarray[j+1] intValue]) {

[sortarray exchangeObjectAtIndex:j withObjectAtIndex:j+1];

}

*/

}

}



// for (int i=0; i<10; i++) {

// NSLog(@"a[%d]=%d",i,a[i]);

// }



//练习作业

// 定义一个数组,数组中是student对象,快速遍历,选出所有女生,添加到一个新的数组中。

// 定义一个字典,字典是一个学生的信息:姓名、年龄、学号、地址.通过遍历显示学生的所有信息







}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: