• 进击的Objective-C--------------字典 集合


    NSDictionary
    1.初始化
    NSDictionary *dict1 =  [[NSDictionary alloc]initWithObjectsAndKeys:@“a”,@“1”,@“b”,@“2”,@“c”,@“3”,nil];
    2.初始化方法2
    NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:@“a”,@“1”,@“b”,@“2”,@“c”,@“3”,nil];
    3.通过字典赋值字典
    NSDictionary *dict3 = [NSDictionary dictionaryWithDictionary:dict1];
    4.通过数组赋值字典
    NSArray  *valueArr = [NSArray arrayWithObjects:@"a",@"b",@"c", nil];
    NSArray *keyArr = [NSArray arrayWithObjects:@"1",@"2",@"3", nil];
    NSDictionary *dict4 = [NSDictionary dictionaryWithObjects:valueArr forKeys:keyArr];
    5.字面量
    NSDictionary *dict5 = @{@“a”:@“1”,@“b”:@“2”,@“c”:@“3"};
    6.通过key获得value
    NSDictionary *dict = @{@“1”:@“周杰伦”,@“2”:@“庾澄庆”,@“3”:@“那英”,@“4”:@“汪峰”};
    NSLog(@“%@“,[dict objectForKey:@“1”]);
    7.获得所有key
    NSLog(@“%@”,[dict allkey]):
    8.获得所有value
    NSLog(@“%@“,[dict allvalue]);
    9.获得键值对个数
    NSLog(@“%lu”,[dict count]);
    NSMutableDictionary(可变字典)
    1.赋值
    NSMutableDictionary *mDict1 = [NSMutableDictionary dictionaryWithObjectsAndKey:@“a”,@“1”,@“b”,@“2”,@“c”,@“3”,nil];
    2.添加
    [mDict1 setObject@“d” forKey:@“4”];
    3.修改
    [mDict1 setObject:@“e” forKey:@“1"];
    4.删除
    [mDict1 removeObjectForKey:@“1”];
    [mDict1 removeAllObjects];
    NSArray *keyarr = [NSArray arrayWithObjects:@“4”,@“3”,nil];
    [mDict1 removeObjectsForKeys:keyarr]
    5.查找
    NSLog(@“%@“,[mDict1 objectForKey:@“2”]);
    6.遍历
    1⃣️一个一个
    for (int i = 0; i < [[mDict1 allValues]count]; i++) {
            NSArray *temp = [mDict1 allValues];
            NSLog(@"%@",temp);
        }
        NSArray * tempArr = [mDict1 allKeys];
    2⃣️通过所有的key打印所有的value
    for (int i  = 0; i < [tempArr count]; i++) {
            NSLog(@"%@",[mDict1 objectForKey:tempArr[i]]);}
    NSSet(集合)
    1.初始化
    NSSet *set1 = [[NSSet alloc]initWithObjects:@“a”,@“b”,@“c”,nil];
    2.初始化2
    NSSet *set2 = [NSSet setWithObjects:@“a”,@“b”,@“c”,nil];
    3.通过集合赋值集合
    NSSet *set3 = [NSSet setWithSet:set2];
    4.通过数组赋值集合
    NSArray *setArr = [NSArray arrayWithObjects:@“a”,@“b”,@“c”,nil
    ];
    NSSet *set = [NSSet setWithArray:setArr];
    5.个数
    NSLog(@“%lu”,[set2 count]);
    6.判断
    NSLog(@“%d”,[set1 containsObject:@“b”]);
    7.查找
    NSLog(@“%@“,[set1 anyObject]);
    NSLog(@“%@“,[set1 allObjects]);
    NSMutableSet(可变集合)
    1.初始化
    NSMutableSet *ms1 = [NSMutableSet setWithObjects:@“a”,@“b”,@“c”,nil];
    2.增加对象
    [ms1 addObject:@“d”];
    3.删除对象
    [ms1 removeObject:@“d"];
    [ms1 removeAllObjects];
    4.修改方法
    [ms1 setSet:set1];
    [ms1 addObject:@“a”];
    NSCountedSet(NSMutableSet的子类)
    1.赋值
    NSCountedSet *ctSet1 = [NSCountedSet setWithObjects:@“a”,@“b”,@“c”,nil];
    2.增加
    [ctSet1 addObject:@“d”];
    [ctSet1 addObject:@“b”];
    3.个数(NSUIntager)
    NSLog(@“%lu”,[ctSet1 count]);
    4.统计重复元素的个数
    NSLog(@“%lu”,[ctSet1 countForObject:@“a"]);
    快速枚举遍历
    1快速遍历一个数组
    NSArray *ar = [NSArray arrayWithObjects:@“a”,@“b”,@“c”,nil];
    for(NSString *    s in  ar)
    { NSLog(@“%@“,s);}
    2快速遍历一个字典(遍历出来的都是key)
    NSDictionary *dict11 = [NSdictionary dictionaryWithObjectsAndKeys:@“a”,@“1”,@“b”,@“2”,@“c”,@“3”,nil];
    for(NSString *ss in dict11)
    { NSLog(@“%@“,ss);}
    快速枚举的特点
     1数组枚举得到数组中的元素对象
     2字典枚举得到的是字典中的key值
     3集合枚举得到的是集合中的元素对象
    例子:
      NSMutableArray *mArr1 = [NSMutableArray arrayWithObjects:@"daa",@"bbb",@"ccc", nil];
        for (int i = 0; i < [mArr1 count] - 1; i++) {
            for (int j = 0; j < [mArr1 count] - 1 - i; j++) {
                if ([[mArr1 objectAtIndex:j]compare:[mArr1 objectAtIndex:j + 1]] == -1) {
                    [mArr1 exchangeObjectAtIndex:j withObjectAtIndex:j+1];
                }
            }
    数组排序
    #import "Person.h"

    @implementation Person
    - (NSString *)name{
        return _name;
    }
    - (void)setName:(NSString *)name{
        _name = name;
    }
    - (NSInteger)age{
        return _age;
    }
    - (void)setAge:(NSInteger)age{
        _age = age;
    }
    - (instancetype)initWithName:(NSString *)name age:(NSInteger)age{
        if (self = [super init]) {
            _name = name;
            _age = age;
        }
        return self;
    }
    - (NSComparisonResult)compareByName:(Person *)aPerson{
        if ([self.name compare:aPerson.name] == 1) {
            return NSOrderedDescending;
        }else if ([self.name compare:aPerson.name] == 0){
            return NSOrderedSame;
        }
        else
            return NSOrderedAscending;
     
    }
    // 格式化字符串 有一个description方法 它可以用于打印数组
    - (NSString *)description{
        NSString *s = [NSString stringWithFormat:@"name:%@,age:%ld",self.name,self.age];
        return s;
    }
    - (NSComparisonResult)compareByAge:(Person *)aPerson{
        if (self.age > aPerson.age) {
            return NSOrderedDescending;
        }else if (self.age == aPerson.age){
            return NSOrderedSame;
        }
        else
            return NSOrderedAscending;
    }
    @end
    #import "Person.h"
    int main(int argc, const char * argv[]) {
        // 有三个人 分别叫 "kobe" 18 "james" 15 "durant" 20按照姓名和年龄进行排序
       
        Person * p1 = [[Person alloc]initWithName:@"kobe" age:18];
        Person * p2 = [[Person alloc]initWithName:@"james" age:15];
        Person * p3 = [[Person alloc]initWithName:@"durant" age:20];
        NSMutableArray *ms1 = [NSMutableArray arrayWithObjects:p1,p2,p3, nil];
        // @selector是一个关键字 指的是一个方法选择器 里面可以写方法名去实现方法
        [ms1 sortUsingSelector:@selector(compareByAge:)];
       
        NSLog(@"%@",ms1);
        [ms1 sortUsingSelector:@selector(compareByName:)];
        NSLog(@"%@",ms1);
  • 相关阅读:
    Vue单元测试Karma+Mocha
    Vue将px转化为rem适配移动端
    vscode格式化代码插件Beautify
    vue项目初始化时npm run dev报错webpack-dev-server解决方法
    在vue项目中引入jquery
    vue全局使用axios插件请求ajax
    vue项目中postcss-pxtorem的使用及webpack中的配置 css中单位px和em,rem的区别
    快速搭建Vue项目
    vue mand-mobile按2.0文档默认安装的是1.6.8版本
    vue mandmobile ui实现三列列表的方法
  • 原文地址:https://www.cnblogs.com/sharkHZ/p/4984020.html
Copyright © 2020-2023  润新知