zoukankan      html  css  js  c++  java
  • Foundation框架之NSArray、NSDictionary、NSSet及其Mutable类型

    Foundation框架之NSArray、NSDictionary、NSSet及其Mutable类型

     

    目录

    • 概述——对Foundation框架集合类的理解
    • NSArray
    • NSDictionary
    • NSSet
    • NSArray、NSDictionary和NSSet的Mutable类型
    • Foundation框架中集合类的使用详见苹果官方文档
    • 集合类的实用操作

    深层遍历

    深层复制

    • 待研究

     

    概述——对Foundation框架集合类的理解

     

    NSArray

    创建

    NSArray *array = [NSArray arrayWithObjects:@"one",@"two",nil];

    NSArray *array2 = @[@"one",@"two"];

    访问NSArray中的元素(通过index)

    array[index];

    [array objectAtIndex:index];

    返回NSArray的长度

    [array count];

    遍历NSArray

    for(id obj in array){

      NSLog(@"%@",obj);

    }

    for(int i=0;i<[array count];i++){

      NSLog(@"%@",array[i]);

    }

     

    NSDictionary

    创建

    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"key1",object1,@"key2",object2,nil];

    NSDictionary *dict2 = @{@"key1":object1,@"key2":object2};

    注意:key和value都可以为类对象,不一定都是字符串;

    访问NSDictionary中的元素(通过key值)

    [dict objectForKey:key];

    dict[key];

    返回NSDictionary的长度

    [dict count];

    遍历NSDictionary(key和value都遍历)

    for(id key in [dict allKeys]){

      NSLog(@"%@",key);

      NSLog(@"%@",dict[key]);

    }

     

    NSSet

    创建

    NSSet *set = [NSSet setWithObjects:@"1",@"2",nil];

    返回NSSet的长度

    [set count];

    遍历NSSet

    for(id obj in set){

      NSLog(@"%@",obj);

    }

     

    NSArray、NSDictionary和NSSet的Mutable类型

    允许在创建对象之后对对象进行更改(插入和删除)操作

     

    Foundation框架中集合类的使用详见苹果官方文档

     

    集合类的实用操作

    深层遍历

    实现思路:增加对所包含的集合对象的处理,在此只对NSArray,NSDictionary,NSSet这三种集合类进行处理,如果有新需求可以增加新处理

    + (void)traverseDictionary:(NSDictionary *)dict{

    for (id object in [dict allValues]) {

            if ([object isKindOfClass:[NSArray class]]) {

                [TraverseCollection traverseArray:object];

            }

            else if ([object isKindOfClass:[NSDictionary class]]){

                [TraverseCollection traverseDictionary:object];

            } 

            else if ([object isKindOfClass:[NSSet class]]){

                [TraverseCollection traverseSet:object];

            }

            else{

                NSLog(@"%@",object);

            }

        }

    }

    深层复制

    与深层遍历类似

     

    待研究

     

  • 相关阅读:
    JS处理日期&字符串格式相互转换
    Ajax 原理过程 同步与异步区别 优缺点
    元素居中
    width:100%;与width:auto;的区别
    URL、URI和URN三者之间的区别
    JavaScript encodeURI(), decodeURI(), encodeURIComponent(), decodeURIComponent()
    CSS 笔记三(Tables/Box Model/Outline)
    CSS 笔记二(Text/Fonts/Links/Lists)
    CSS 笔记一(Selectors/ Backgrounds/ Borders/ Margins/ Padding/ Height and Width)
    javascript,jQuery,trim()
  • 原文地址:https://www.cnblogs.com/IOS-Developer/p/4191923.html
Copyright © 2011-2022 走看看