//
// main.m
// OC5_数组_字典
//
// Created by YIem. on 11/30/15.
// Copyright (c) 2015 www.yiem.net YIem博客. All rights reserved.
//

import <Foundation/Foundation.h>

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

if 0

// 补充
// string -> array
NSString *str = @"http://www.iOS.com/lanou/sanlou/classroom8/DLS151129";
// 切分
NSArray *arr = [str componentsSeparatedByString:@"/"];
NSLog(@"arr: %@", arr);
// 获取数组元素
NSLog(@"%@ %@", [arr objectAtIndex:2], arr[4]);
// 获取第一个元素 firstObject
NSLog(@"first: %@", arr.firstObject);
// 获取最后一个元素 lasObject
NSLog(@"last: %@", arr.lastObject);
// array -> string
// 数组拼接成字符串
NSString *newStr = [arr componentsJoinedByString:@"/"];
NSLog(@"str: %@", newStr);

// 数据容器 collection
// 数组array 字典dictionary 集合set
// 增(add/insert) 删(remove) 改(replace) 查(...object...)

// NSMutableArray 可变数组
// 创建
NSMutableArray *mArr = [NSMutableArray array];
// 添加 add
[mArr addObject:@"火星救援"];
[mArr addObject:@"真实恶魔游戏"];
// 插入 insert
[mArr insertObject:@"The Martin" atIndex:0];
// 删除/移除 remove
[mArr removeObjectAtIndex:1];
// 替换 replace
[mArr replaceObjectAtIndex:1 withObject:@"National Treasure"];
// 交换 exchange
[mArr exchangeObjectAtIndex:0 withObjectAtIndex:1];
NSLog(@"%@", mArr);

// 可变数组 <-> 不可变数组
NSArray *arrI = @[@"a", @"b", @"c"];
// 1.mutableCopy 可变拷贝
NSMutableArray *arrM1 = [arrI mutableCopy];
// 2.数组创建
NSMutableArray *arrM2 = [NSMutableArray arrayWithArray:arrI];
// 3.逐个添加元素
NSMutableArray *arrM3 = [NSMutableArray array];
[arrM3 addObjectsFromArray:arrI];

// 数组特点:
// 1.内容必须为对象
// 2.有序->下标->通过下标进行操作

// 练习:
NSString *text = @"Mon&Tue&Wed&Thu&Fri&Sat";
// 1.切分成数组(不可变)

// NSArray *textArr = [text componentsSeparatedByString:@"&"];

// 2.通过切分后的数组 产生一个可变数组
NSMutableArray *newTextArr = [[text componentsSeparatedByString:@"&"] mutableCopy];
// 3.在可变数组中最后一位添加Sun
[newTextArr addObject:@"Sun"];
// 4.在第0位添加Sun
[newTextArr insertObject:newTextArr[newTextArr.count - 1] atIndex:0];
// 5.将最后一位替换为Happy Weekend
[newTextArr replaceObjectAtIndex:newTextArr.count - 1 withObject:@"Happy Weekend"];
// 6.移除最后一位
[newTextArr removeLastObject];
// 7.for...in遍历打印数组
for (NSString *temp in newTextArr) {
    NSLog(@"%@", temp);
}

endif

if 1

// NSDictionary 字典
// key-value 键值对
// 1.所有内容必须是对象
// 2.key不能重复 必须唯一 一般使用字符串
// 3.value必须是对象
// 4.无序 只能通过key获取对应value

// 创建
// 书写顺序: value在前 key在后
NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"Tom", @"name", @"male", @"sex", nil];
NSLog(@"dic1: %@", dic1);
// 字面量创建
// 书写顺序: key在前 value在后
NSDictionary *dic2 = @{@"name": @"Jerry", @"sex": @"male"};
NSLog(@"dic2: %@", dic2);
// 键值对个数 count
NSLog(@"count: %lu", dic2.count);
// 获取某个元素 objectForKey:
// 字面量 字典名[key值]
NSLog(@"object: %@ %@", [dic2 objectForKey:@"name"], dic2[@"sex"]);
// key不能重复
NSDictionary *dic3 = @{@"1": @"2", @"1": @"3"};
NSLog(@"dic3: %@", dic3);
// key数组
NSLog(@"allKey: %@", dic2.allKeys);
// value数组
NSLog(@"allValue: %@", dic2.allValues);
// 遍历字典
// 提示:
// 1.定义一个新的字典
NSDictionary *dic4 = @{@"name": @"Jack", @"sex": @"male"};
// 2.获取allKeys数组
// 3.遍历allKeys(for...in)
for (NSString *key in dic4.allKeys) {
    // 4.通过得到的每一个key 访问对应value 按照key-value结构打印信息
    NSLog(@"%@-%@", key, dic4[key]);
}
// 字典for...in 获取到每一个key值
for (NSString *t in dic4) {
    NSLog(@"%@", t);
}

endif

if 0

// NSMutableDictionary 可变字典
// 创建
NSMutableDictionary *mDic = [NSMutableDictionary dictionary];
// 增 (set) key不存在的时候
[mDic setObject:@"Rose" forKey:@"name"];
// 改 (set) key存在的时候
[mDic setObject:@"Lux" forKey:@"name"];
// 删 (remove)
[mDic removeObjectForKey:@"name"];

NSLog(@"%@", mDic);

endif

if 1

// NSSet 集合
// 1.互异性(唯一) 集合元素唯一
// 2.无序
// 3.内容必须为对象

// 创建
NSSet *set1 = [NSSet setWithObjects:@"a", @"p", @"p", nil];
NSLog(@"set1: %@", set1);
// 判断包含
NSLog(@"%d", [set1 containsObject:@"p"]);
// 获取元素
NSLog(@"%@", [set1 anyObject]);
// 集合遍历
for (NSString *t in set1) {
    NSLog(@"%@", t);
}

// NSMutableSet 可变集合
NSMutableSet *mSet = [NSMutableSet set];
// 添加 (add)
[mSet addObject:@"1"];
[mSet addObject:@"2"];
[mSet addObject:@"2"];
// 删除 (remove)
[mSet removeObject:@"1"];
NSLog(@"%@", mSet);

endif



return 0;

}