//
// main.m
// OC04 NSString、NSArray、NSNumber-2
//
// Created by xalo on 15/10/29.
// Copyright (c) 2015年 康大亮. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
#pragma mark NSArray数组类的初级使用
/*
* OC数组中的成员是 有序 的,索引从0开始
* 数组中存储的都是对象,对象不分类型。(但是不能存放基本数据类型)
* 数组分为可变数组和不可变数组
*/
#pragma mark 不可变数组
// 创建一个不可变数组
NSArray *array1 = [NSArray arrayWithObject:@"hello"];
NSLog(@"%@", array1);
// 在创建有多个元素的数组,必须在元素结尾处,且只能在结尾处添加一个nil对象(表示数组元素到此结束)
NSArray *array2 = [NSArray arrayWithObjects:@"hello", @"world", nil];
NSLog(@"%@", array2);
// 如果数组中某个元素在创建时不能确定,我们可以使用NSNull对象来占位。
NSArray *array3 = [NSArray arrayWithObjects:@"hello",[NSNull null],@"world", nil];
NSLog(@"%@", array3);
#pragma mark 不可变数组的操作
// 1)获取数组元素的个数
int a = (int)[array3 count];
NSLog(@"%d", a);
// 2) 获取某个索引值位置的元素
// 因为不能确定获取到的元素师属于哪一个类,所以在定义的对象必须是泛型。instancetype只能用在方法的返回值部分,来确保返回值的类型安全,不能用在这里声明一个对象,在这里需要使用id
id temp = [array3 objectAtIndex:2]; // id是泛型,因此temp前不需要*
NSLog(@"%@", temp);
// 3)获取某个元素在数组中的索引,如果这个对象并不在数组中,则返回一个负数
int index = (int)[array3 indexOfObject:temp];
NSLog(@"%d", index);
// 4)遍历数组:使用for循环遍历数组
for (int i = 0; i < [array3 count]; i++) {
id object = [array3 objectAtIndex:i];
NSLog(@"**%@", object);
}
#pragma mark 可变数组的操作
// 创建一个可变数组
NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];
// 1)给数组添加一个新元素(按顺序添加)
[mArray addObject:@"5"];
NSLog(@"%@",mArray);
// 2)给数组添加一个新元素(指定位置插入新元素)
[mArray insertObject:@"12" atIndex:2];
NSLog(@"%@",mArray);
// 3)交换两个元素的位置
[mArray exchangeObjectAtIndex:3 withObjectAtIndex:4];
NSLog(@"%@",mArray);
// 4) 替换某个元素
[mArray replaceObjectAtIndex:3 withObject:@"welcome to my room"];
NSLog(@"%@",mArray);
// 5) 删除元素
// 5.1根据下标删除元素
[mArray removeObjectAtIndex:1];
NSLog(@"%@",mArray);
// 5.2直接删除指定的对象
[mArray removeObject:@"welcome to my room"];
NSLog(@"%@",mArray);
// 5.3删除最后一个元素
[mArray removeLastObject];
NSLog(@"%@",mArray);
// 5.4删除全部元素
[mArray removeAllObjects];
NSLog(@"%@",mArray);
#pragma mark NSNumber
// NSNumber专门用来将基本数据类型封装为OC中的对象
// 整形数转化为NSNumber对象
NSNumber *intNumber = [NSNumber numberWithInt:10];
NSLog(@"%@",intNumber);
//
NSNumber *_floatNumber = [NSNumber numberWithFloat:3.14];
NSLog(@"%@",_floatNumber);
// 将NSNumber转化回基本数据类型(逆向转化)
int d = [intNumber intValue];
NSLog(@"%d", d);
//
float f = [_floatNumber floatValue];
NSLog(@"%.2f", f);
return 0;
}