代码改变世界

数组的应用创建、存储、自己定义、高速获取

2017-08-14 11:35  tlnshuju  阅读(272)  评论(0编辑  收藏  举报
//
//  main.m


#import <Foundation/Foundation.h>
#import "Person.h"
/*
   <span style="white-space:pre">	</span>1 创建集合
	2 通过构造方法的方式创建一个NSArray
	3 数组中能够存储不同类型的对象
	4 数组实际上是存储的是对象的地址,相同也能够存储数组的地址
	5 存储自己定义的对象
	6 数组中存储基本数据类型
	7 创建数组的快捷方式
	8 高速获得一个数组中的元素
	9 从集合中取出数据
	10 获得数组的元素个数
	11 推断数组中是否存在某个对象
 */
int main(int argc, const char * argv[]) {
    @autoreleasepool {
       //  1 创建集合
      
        
        NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three", nil];
        NSLog(@"array %@",array);
        NSArray * array1 = @[@"one",@"two",@"three"];
        NSLog(@"array1 %@",array1);
        
        // int float char double bool
        int i = 10;
        NSNumber * number = [[NSNumber alloc] initWithInt:i];
        //3 数组中能够存储不同类型的对象
        NSArray * array2 = @[@"one",@"two",number];
        NSLog(@"array2 %@",array2);
        
        // 4 数组中实际是存储的对象的地址 数组中也能够存储地址
        NSArray * a1 = @[@"one",@"two",@"three"];
        NSArray * a2 = @[@"1",@"2",@"3"];
        
        NSArray * a3 = @[a1,a2];
        NSLog(@"a3 %@",a3);
        NSString * str = nil;
        // 此方法中最后一个元素必须是 nil 假设数组中存储 nil 元素easy导致数据丢失
        NSArray * array3 = [[NSArray alloc] initWithObjects:@"one",str,a3,@"three", nil];
        NSLog(@"%@",array3);
        // 创建三个 Person 对象存入数组中
        Person * p1 = [[Person alloc] initWithName:@"Jack" andAge:15];
        Person * p2 = [[Person alloc] initWithName:@"Tom" andAge:18];
        Person * p3 = [[Person alloc] initWithName:@"Jim" andAge:20];
        NSArray * array4 = [[NSArray alloc] initWithObjects:p1,p2,p3, nil];
        NSLog(@"%@",array4);
        //6 数组中存储基本数据类型
//        + (NSNumber *)numberWithChar:(char)value;
//        + (NSNumber *)numberWithInt:(int)value;
//        + (NSNumber *)numberWithFloat:(float)value;
//        + (NSNumber *)numberWithDouble:(double)value;
//        + (NSNumber *)numberWithBool:(BOOL)value;
//        + (NSNumber *)numberWithInteger:(NSInteger)value
        // 用 NSNumber 将基本数据类型包装后存入数组
        NSNumber * number1 = [NSNumber numberWithFloat:8.9];
        NSNumber * number2 = [NSNumber numberWithInt:8];
        NSNumber * number3 = [NSNumber numberWithDouble:8.9345];
        NSNumber * number4 = [NSNumber numberWithChar:'c'];
        
        NSArray * array5 = [[NSArray alloc] initWithObjects:number1,number2,number3,number4, nil];
        // char 类型存储的是 ASCII 码值
        NSLog(@"%@",array5);
        char c = [[array5 objectAtIndex:3] charValue];
        NSLog(@"%c",c);
        // 数组取元素
        Person * p4 = [array4 objectAtIndex:1];
        NSLog(@"%@",p4);
        // 取元素的高速方法
        Person * p5 = array[1];        
    }
    return 0;
#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    NSString * _name;
    int _age;
}
- (id)initWithName:(NSString *)name andAge:(int)age;
- (void)setName:(NSString *)name;
- (NSString *)name;
- (void)setAge:(int)age;
- (int)age;
@end

#import "Person.h"

@implementation Person
- (id)initWithName:(NSString *)name andAge:(int)age {
    if (self = [super init]) {
        _name = name;
        _age = age;
    }
    return self;
}

- (void)setName:(NSString *)name {
    _name = name;
}

- (NSString *)name {
    return _name;
}

- (void)setAge:(int)age {
    _age = age;
}

- (int)age {
    return _age;
}

- (NSString *)description {
    return [NSString stringWithFormat:@"name = %@, age = %d",_name,_age];
}