[2]姥爷幽默谈Objective-C(数组和字典)

来源:互联网 发布:java开发在公司好痛苦 编辑:程序博客网 时间:2024/05/04 14:13

1.数组

1)NSArray,不可变数组是指不能进行增删改等的操作的数组。NSArray的创建原则上是有2中方法,一种是通过带参数的init方法创建`NSArray *array = [[NSArray alloc]initWithObjects:@"1", @"2", @"3", @"4", nil];`,一种是用带参数的类方法创建 `NSArray *array = [NSArray [NSArray arrayWithObjects:@"甲", @"乙", @"丙", @"丁", nil];`还有一种不过它只不过是OC2.0之后的简写,事实上他在底层还是调用上一种方法进行创建的,`NSArray array* = @[@"1",@"2"];`
// 通过带参数的init方法创建NSArray *array = [[NSArray alloc]initWithObjects:@"1", @"2", @"3", @"4", nil];// 用带参数的类方法创建 NSArray *array = [NSArray [NSArray arrayWithObjects:@"甲", @"乙", @"丙", @"丁", nil];// OC2.0之后的简写,事实上他在底层还是调用上一种方法进行创建的.NSArray array* = @[@"1",@"2"];
2)数组的遍历,最常用的俩种方法是for和forin增强for循环或许OC中不是这么念的但是功能是一样的。
// 第一种方式for循环for (int i = 0; i < array.count; i++){    NSLog(@"%@",[array objectAtIndex:i]);}// 第二种forin 循环for (NSString *temp in array){    NSLog(@"%@",temp);}// 第三种OC2.0简写法NSArray *array3 = @[@"一", @"二", @"三", @"四"]; for (int i=0; i<array3.count; i++) {    NSLog(@"%@", array3[i]);}
3)NSNumber包装类,用于把基本类型包装成类,用于满足某些特定要求。
NSNumber*myNumber,*floatNumber,*intNumber,*number1;  //创建integer类型对象  intNumber = [NSNumber numberWithInteger:123];  NSLog(@"%i",[intNumber integerValue]);  //创建long类型对象  myNumber = [NSNumber numberWithLong:0xababab];  NSLog(@"%lx",[myNumber longValue]);  //创建char类型对象  myNumber = [NSNumber numberWithChar:'K'];  NSLog(@"%c",[myNumber charValue]);  //创建float类型对象  floatNumber = [NSNumber numberWithFloat:123.00];  NSLog(@"%f",[floatNumber floatValue]);  //创建double类型对象  myNumber = [NSNumber numberWithDouble:112233e+15];  NSLog(@"%lg",[myNumber doubleValue]);
4)NSMutableArray,可变数组长度,可对数组进行增删改查等操作。它的创建其实和NSArray差不多只不过是NSMutable在用init方法创建时完全可以使用无参的init方法进行创建并初始化,但是NSArray如果要用无参的话,这个数组那么就没有意义了。着重介绍一下NSMultable的增删改查操作,见代码!
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {    @autoreleasepool {        //创建一个有初始内容的可变数组        //参数是数组的初始内容,最后一个参数后必须是nil。        NSMutableArray *array1 = [[NSMutableArray alloc]initWithObjects:@"one", @"two", @"three", @"four", @"five", nil];        NSLog(@"数组的初始内容");        for (NSString *element in array1) {            NSLog(@"%@", element);        }        //在数组下标0处插入元素@"Zero"        [array1 insertObject:@"Zero" atIndex:0];        //在数组末尾插入一个元素        [array1 addObject:@"Six"];        //删除数组array1下标0的元素        [array1 removeObjectAtIndex:0];        //删除数组array1最后一个元素        [array1 removeLastObject];        //删除数组array1的全部元素        [array1 removeAllObjects];        [array1 addObject:@"ZERO"];        //把array1替换下标为0的元素替换为@"zero"        [array1 replaceObjectAtIndex:0 withObject:@"zero"];        //NSUInteger是一个宏,表示无符号整数,在32位系统里占4个字节,在64位系统里占8个字节        //查找某个元素在数组中的下标        NSUInteger index = [array1 indexOfObject:@"aa"];        if (index == NSNotFound) {            NSLog(@"要查的元素不存在");        } else {            NSLog(@"index: %lu", index);        }        //=======================================        //用类方法创建一个空的可变数组        NSMutableArray *array2 = [NSMutableArray array];        [array2 addObject:@"zero"];        //用类方法创建非空的(有初始值)的可变数组        NSMutableArray *array3 = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", @"4", nil];        [array3 addObject:@"5"];    }    return 0;}

2.字典,用于存储键值成对的数据!

NSDictionary 不可变字典 NSMutableDictionary 可变字典Key(键)      Value(值)姓名                lucy年龄                110性别                女 NSString      对象   字符串   数组 键值对  成对出现的 有一个键 (key)就有 一个值(Value)在一个字典中  Key值 “sex” 名字不能重复 只能有一个 不能重复    一、不可变字典字典是链式的结构 不是顺序的 没有取下标的方法1、字典的创建 //不可变字典的创建 NSDictionary * dic = [[NSDictionary alloc]initWithObjectsAndKeys:@"lucy",@"姓名", @"18",@"年龄",@"10",@"体重",nil];2、字典键值对个数 [dic count];3、所有的keys 获得  NSArray* keysArray=[dic allKeys];4、所有values获得 //字典全部values获得 NSArray* valuesArray = [dic allValues];二、可变字典NSMutableDictionary继承自NSDictionary 键值对可以改变 数量 1、创建方法    类方法创建增//增加 一对键值对    [dic setObject:@"TianFL" forKey:@"address"];    NSLog(@"%@",dic);    //当 key值 已经有了的时候 再写就是改写了    [dic setObject:@"500" forKey:@"size"];删 //删除某全部的键值对        [dic removeAllObjects];        //删除某一个键值对        [dic removeObjectForKey:@"size"];改 //当 key值 已经有了的时候 再写就是改写了        [dic setObject:@"500" forKey:@"size"];查NSLog for in 打印键2、找某一个键之下的值   name - >lucy//根据键Key 去找值Value       id value = [dic objectForKey:@"name"];        NSLog(@"%@",value);去银行查询账户信息带身份证 ->全部的信息    字典   key 身份证号码  value 字典银行卡  ->全部的信息    字典   key 身份证号码  value 字典
0 0