码迷,mamicode.com
首页 > 移动开发 > 详细

学习iOS【3】数组、词典和集合

时间:2016-05-06 23:27:13      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:

一、数组

1.不可变数组NSArray

  • arrayWithObjects:使用一组对象作为元素创建不可变数组,注意数组的最后一个值需要指定为nil,用来表示参数的结束,但是nil并不会存储在数组中。
  • objectAtIndex:获取指定索引位置的数组元素。
  • @[elm1,elm2….elmn]:另外一种创建数组的简便方式,不需要以nil作为结尾元素;
  • array[index]:另外一种获取指定索引位置元素的方式。
  • count:数组中元素个数。
 
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        /*不可变数组*/
        //创建不可变数组 方式一
        NSArray *arr=[NSArray arrayWithObjects:@"周一",@"周二",@"周三",@"周四",@"周五",@"周六",@"周日",nil];
        for(int i=0;i<[arr count];i++){
            NSLog(@"%@",[arr objectAtIndex:i]);
        }
        //创建不可变数组 方式二
        NSArray *arr1=@[@"周一",@"周二",@"周三",@"周四",@"周五",@"周六",@"周日"];
        for(int i=0;i<[arr1 count];i++){
            NSLog(@"%@",arr1[i]);
        }
    }
}

2.可变数组NSMutableArray

  • NSMutableArray array方法创建空的可变数组,数组元素个数未定,可以随着需要增长;
  • addObject:向可变数组结尾添加元素;
  • insertObject:obj atIndex:i :将对象obj插入数组的第i个元素。
  • removeObjectAtIndex:i  删除数组中第i个元素。
  • replaceObjectAtIndex:i withObject:obj 将数组中序号为i的对象用obj替换。
  • 使用NSLog格式化%@可以显示整个数组,它实际上会调用每个元素的description方法。
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        /*可变数组*/
        NSMutableArray *marr=[NSMutableArray array];
        for (int i=0; i<3; i++) {
            marr[i]=@(i+1);
        }
        [marr addObject:@(4)];
        for (int i=0; i<[marr count]; i++) {
            NSLog(@"%@",marr[i]);
        }
        NSLog(@"%@",marr);
     }
}

 

二、词典对象(dictionary)

词典也有两种类型:不可变词典NSDictionary和可变词典NSMutableDictionary。

1.不可变词典NSDictionary

  • NSDictionary dictionaryWithObjectsAndKeys:创建不可变词典,参数是值-键对组合(注意顺序),以nil结尾。
  • allKeys:返回一个数组包含词典中的所有键;
  • count:返回词典中的记录数;
  • objectForKey:返回key的值对象。
 
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        /*不可变词典*/
        NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:@"学生",@"1",@"教师",@"2", nil];
        for (NSString *key in dic) {
            NSLog(@"key:%@ value:%@",key,[dic objectForKey:key]);
        }
     }
}

2.可变词典NSMutableDictionary

  • NSMutableDictionary dictionary:创建一个可变词典;
  • setObject:forKey:把键值对添加到可变词典中;
  • removeAllObjects:删除词典中所有的记录;
  • removeObjectForKey:删除词典中的指定键key对应的记录;
 
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        /*可变词典*/
        //创建可变词典对象
        NSMutableDictionary *mdic=[NSMutableDictionary dictionary];
        //添加键值对
        [mdic setObject:@"学生" forKey:@"1"];
        mdic[@"2"]=@"教师";
        //显示键值对
        NSLog(@"key:1 value is:%@",[mdic objectForKey:@"1"]);//key:1 value is:学生
        NSLog(@"key:2 value is:%@",mdic[@"2"]);//key:2 value is:教师
        //删除
        [mdic removeObjectForKey:@"1"];
        NSLog(@"mdic count:%lu",[mdic count]);//mdic count:1
        [mdic removeAllObjects];
        NSLog(@"mdic count:%lu",[mdic count]);//mdic count:0
     }
}

三、集合对象(set)

set是一组单值对象集合。

1.NSSet 不可变词典

  • setWithObjects:以一个nil为结尾的对象数组创建一个集合。
  • containObject:检测某个对象是否包含在集合中。
  • count:集合成员个数。
 

2.NSMutableSet 可变词典

  • addObject:向集合中添加对象;
  • removeObject:从集合中删除对象;
  • removeAllObjects:删除集合中所有对象;
  • unionSet:求两个集合的并集;
  • intersectSet:求两个集合的交集
 

3.实例

首先我们自定义分类为NSSet添加自定义方法print。
NSSet+Printing.h
#import <Foundation/Foundation.h>

@interface NSSet (Printing)
-(void)print;
@end

 

NSSet+Printing.m
#import "NSSet+Printing.h"

@implementation NSSet (Printing)
-(void)print{
    NSLog(@"------");
    for(NSNumber *item in self){
        NSLog(@"%li",(long)[item integerValue]);
    }
}
@end

 

main.m
#import <Foundation/Foundation.h>
#import "NSSet+Printing.h"

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        //创建不可变集合
        NSSet *set=[NSSet setWithObjects:@"1",@"3",@"5", @"7",nil];
        //创建可变集合
        NSMutableSet *mset=[NSMutableSet setWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
        //输出
        [set print];
        [mset print];
        //成员测试
        if([set containsObject:@"7"]==YES){
            NSLog(@"set contain 7");
        }else{
            NSLog(@"set does not contain 7");
        }
        //添加对象
        [mset addObject:@"6"];
        [mset print];
        //移除对象
        [mset removeObject:@"6"];
        //求并集
        [mset unionSet:set];
        [mset print];
        [mset print];
        //求交集
        [mset intersectSet:set];
        [mset print];
     }
}
 

学习iOS【3】数组、词典和集合

标签:

原文地址:http://www.cnblogs.com/janes/p/5467317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!