object-C 之 foundation--NSDictionary

本文详细介绍Objective-C中字典的创建、初始化、查询及遍历等操作,并演示了如何进行键值对的管理和文件存储。
转自:http://simman.cc/article/2243/
//1.dictionary  创建一个空字典
NSDictionary * dic = [NSDictionary dictionary];

//2. 创建并初始化
//  dictionaryWithObject:(id)forkey:(id)<nscopying>
NSDictionary * dic1 = [NSDictionary dictionaryWithObject:@"Apple" forKey:@"Android"];
NSLog(@"%@", dic1);

//3.创建并返回一个字典。
// dictionaryWithObjects:forkeys
NSArray * keys = [NSArray arrayWithObjects:@"name", @"sex", @"age", nil];
NSArray * values = [NSArray arrayWithObjects:@"Apple", @"女", [NSNumber numberWithInt:25], nil];
NSDictionary * dic3 = [NSDictionary dictionaryWithObjects:values forKeys:keys];
NSLog(@"%@", dic3);

//4.使用键-对象对{key1,obj1}、{key2,obj2}...创建词典
//  dictionaryWithObjectsAndKeys
NSDictionary * dic4 = [NSDictionary dictionaryWithObjectsAndKeys:
                       @"apple", @"name",
                       @25,      @"age", nil];
NSLog(@"%@", dic4);

//5. @ 自面量
NSDictionary * dic5 = @{@"name": @"Apple", @"age": @25, @"sex": @"女"};
NSLog(@"@ = %@", dic5);

// allkeys 返回一个数组包含词典中所有的键
NSLog(@"allkeys:%@", [dic5 allKeys]);

//allkeysForObject: 返回一个数组,包含所有对应到给定对象的关键字。
NSArray * aa = @[@"name",@"apple",@"winphone",@"apple"];
NSLog(@"aaaaaaa%@", [dic5 allKeysForObject:aa]);


//allValues:返回一个数组包含词典中所有的值
NSLog(@"allValues:%@", [dic5 allValues]);

//objectForKey:返回指定 key 的 value,若没有这个 key 返回 nil.
NSLog(@"%@", [dic5 objectForKey:@"name"]);

//valueForKey 同样是返回指定 key 的 value。
NSLog(@"%@", [dic5 valueForKey:@"name"]);

//objectsForKeys:< #(NSArray *)#> notFoundMarker:< #(id)#>
// 根据给定的键值数组返回对应的值,如果找不到则返回 notFoundMarker
NSLog(@"%@", [dic5 objectsForKeys:@[@"Name", @"Age", @"Sex"] notFoundMarker:@"NOT"]);


//count:返回字典中的记录数
NSLog(@"count:%zi", [dic5 count]);

//遍历字典中的key
NSLog(@"遍历字典\n\n");
//迭代器遍历
NSEnumerator * keyEnum = [dic5 keyEnumerator];
id key = nil;
while (key = [keyEnum nextObject]) {
    NSLog(@"%@", key);
}

//快速遍历
for (id key in dic5) {
    NSLog(@"%@", key);
}
//遍历字典中的value
for (id key in dic5) {
    NSLog(@"%@", [dic5 valueForKey:key]);
}

//block遍历
[dic5 enumerateKeysAndObjectsUsingBlock:
 ^(id key, id obj, BOOL *stop) {
     NSLog(@"%@ = %@", key, values);
 }];


//可变字典
NSMutableDictionary * dic2 = [NSMutableDictionary dictionary];

//setObject: forKey: 添加value与key,如果key存在则替换该值
[dic2 setValue:@"HH" forKey:@"100"];
[dic2 setValue:@"kj" forKey:@"哈哈"];
NSLog(@"%@", dic2);

//removeObjectForKey 删除词典中指定key对应的记录
[dic2 removeObjectForKey:@"100"];
NSLog(@"%@", dic2);

//removeAllObjects 删除词典中的所有记录
[dic2 removeAllObjects];
NSLog(@"%@", dic2);

NSDictionary * diction1 = [NSDictionary dictionaryWithObjectsAndKeys:
                           @"Apple", @"Name",
                           @15, @"Age",nil];
NSDictionary * diction2 = [NSDictionary dictionaryWithObjectsAndKeys:
                           @"Android", @"Name",
                           @28, @"Age",nil];

//isEqualToDictionary 比较两个字典
if([diction1 isEqualToDictionary:diction2]){
    NSLog(@"diction1 equal diction2");
}else{
    NSLog(@"diction1 not equal diction2");
}


// writeToFile 把字典写入文件(xml格式)
NSString * path = @"/Users/simman/diction1.xml";
[diction1 writeToFile:path atomically:YES];

//dictionaryWithContentsOfFile 读取一个文件返回给新的字典对象
NSDictionary *newDic = [NSDictionary dictionaryWithContentsOfFile:path];
</nscopying>

计及风电并网运行的微电网及集群电动汽车综合需求侧响应的优化调度策略研究(Matlab代码实现)内容概要:本文研究了计及风电并网运行的微电网及集群电动汽车综合需求侧响应的优化调度策略,并提供了基于Matlab的代码实现。研究聚焦于在高渗透率可再生能源接入背景下,如何协调微电网内部分布式电源、储能系统与大规模电动汽车充电负荷之间的互动关系,通过引入需求侧响应机制,建立多目标优化调度模型,实现系统运行成本最小化、可再生能源消纳最大化以及电网负荷曲线的削峰填谷。文中详细阐述了风电出力不确定性处理、电动汽车集群充放电行为建模、电价型与激励型需求响应机制设计以及优化求解算法的应用。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源、微电网、电动汽车等领域技术研发的工程师。; 使用场景及目标:①用于复现相关硕士论文研究成果,深入理解含高比例风电的微电网优化调度建模方法;②为开展电动汽车参与电网互动(V2G)、需求侧响应等课题提供仿真平台和技术参考;③适用于电力系统优化、能源互联网、综合能源系统等相关领域的教学与科研项目开发。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注模型构建逻辑与算法实现细节,同时可参考文档中提及的其他相关案例(如储能优化、负荷预测等),以拓宽研究视野并促进交叉创新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值