字典就是关键字及其定义(描述)的集合。Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象)。然后你就可以用这个关键字来查找相应的数值。
不同于数组,字典(也被称为散列表或关联数组)使用的是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。
可使用dictionaryWithObjectsAndKeys来创建字典
查询字典的值:objectForKey
NSMutableDictionary的dictionary方法可以创建一个可变字典,也可以使用dictionaryWithCapaticy:。
使用 setObject:forkey: 方法添加字典元素,如果关键字已存在,则用新植替换旧值。
类似的,NSMutableDictionary类允许随意添加或删除字典元素。
添加元素:setObject:forkey:
删除元素:removeObjectForKey:

#import <Foundation/Foundation.h>

@interface MyClass : NSObject
{
NSString *firstName;
NSString *lastName;
}
-(void) setFirstName:(NSString*)m_firstName;
-(NSString*)firstName; -(void) setLastName:(NSString*)m_lastName;
-(NSString*)lastName;
@end
//
// MyClass.m
// Dictionary
//
// Created by Aron-Mac-VM on 3/14/16.
// Copyright (c) 2016 PQLabs. All rights reserved.
// #import "MyClass.h" @implementation MyClass
-(void)setFirstName:(NSString *)m_firstName
{
firstName = m_firstName;
}
-(NSString*)firstName
{
return firstName;
} -(void)setLastName:(NSString *)m_lastName
{
lastName = m_lastName;
}
-(NSString*)lastName
{
return lastName;
} -(NSString*)description
{
if(firstName == nil || lastName == nil)
{
return @"No Name found.";
}
else
{
return [NSString stringWithFormat:@"%@ %@",firstName,lastName];
}
}
@end
//
// main.m
// Dictionary
//
// Created by Aron-Mac-VM on 3/14/16.
// Copyright (c) 2016 PQLabs. All rights reserved.
// #import <Foundation/Foundation.h>
#import "MyClass.h"
int main(int argc, const char * argv[])
{ @autoreleasepool { MyClass *my1 = [MyClass new];
MyClass *my2 = [[MyClass alloc]init];
MyClass *my3 = [MyClass new];
MyClass *my4 = [MyClass new]; NSDictionary *myClassDict;
myClassDict = [NSDictionary dictionaryWithObjectsAndKeys:my1, @"my1",
my2, @"my2",
my3, @"my3",
my4, @"my4",nil]; //获取值objectForkey
MyClass *sub = [myClassDict objectForKey:@"my3"];
if(sub==nil)
{
exit();
}
[sub setFirstName:@"pan"];
[sub setLastName:@"Sunde"];
NSLog(@"mofiy the data: %@",sub); //遍历字典
for(id key in myClassDict)
{
NSLog(@"key: %@, value: %@",key,[myClassDict objectForKey:key]);
}
//添加新元素
//NSDictionary无法添加或者删除元素,可以使用NSMutableDictionary NSMutableDictionary *myNewDict = [NSMutableDictionary dictionary]; //把原有的字典添加到新字典的一对元素
[myNewDict setObject:myClassDict forKey:@"旧的不可变字典myClassDict"]; //遍历添加已有数据(原字典)
for(id key in myClassDict)
{
[myNewDict setObject:[myClassDict objectForKey:key] forKey:key];
}
NSString *newValue = @"This is a new Value";
NSString *newKey = @"a new Key";
[myNewDict setObject:newValue forKey:newKey]; //遍历myNewDict
NSLog(@"*********遍历字典myNewDict如下:");
for(id key in myNewDict)
{
NSLog(@"Key: %@, value: %@",key,[myNewDict objectForKey:key]); }
NSLog(@"*********遍历字典myNewDict Over:");
//删除元素 [myNewDict removeObjectForKey:@"a new Key"];
for(id key in myNewDict )
{
NSLog(@"key: %@,value: %@",key,[myNewDict objectForKey:key]); } } return ;
}

字典:NSDictionary的应用举例的更多相关文章

  1. OC中的字典NSDictionary

    ========================== 字典 ========================== NSDictionary * dict = [[NSDictionary alloc] ...

  2. Foundation框架--字典( NSDictionary NSMutableDictionary )

    基础知识 1.字典不允许相同的key,但允许有相同的value. 2,字典是无序的,字典不能排序. 3.字典里的内容是成对存在的,不会出现单数. 4.快速创建的方式只适合不可变字典. 不可变字典 #i ...

  3. iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转

    iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转 1. 字典转Json字符串 // 字典转json字符串方法 -(NSString *)convertToJs ...

  4. 字典NSDictionary以及NSMutableDictionary的用法总结

    做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便.在Objective-C语言中 词典 ...

  5. IOS字典NSDictionary与NSMutableDictionary知识点

    字典中的元素是以键值对的形式存储的,键值对的键和值,都是任意的对象,但是键往往使用字符串,字典存储对象的地址没有顺序,字典的遍历分为:键的遍历和值的遍历,字典与数组的区别:数组讲究顺序,而字典可以快速 ...

  6. iOS - 字典(NSDictionary)

    1. 字典类型的常用处理 //---------------不可变字典 //1.字典的创建 NSArray *array1 = [NSArray arrayWithObjects:@"zha ...

  7. oc75--不可变字典NSDictionary

    // // main.m // NSDictionary // // #import <Foundation/Foundation.h> int main(int argc, const ...

  8. 字典NSDictionary和NSMutableDictionary的使用

    简介:字典是一种数据结构,字典里面的每一个元素,是一个key-value(键值对),key和value都是对象类型.同NSArray一样,里面的对象不用保持一致性. NSDictionary 1.字面 ...

  9. iOS/Objective-C开发 字典NSDictionary的深复制(使用category)

    目标:把NSDictionary对象转换成NSMutableDictionary对象,对象内容是字符串数组,需要实现完全复制(深复制). 如果调用NSDictionary的mutableCopy方法, ...

随机推荐

  1. Delphi结构体数组指针的问题

    //这段代码在Delphi 2007和delphi 7下是可以执行的,所以正确使用结构体数组和指针应该是这样的,已验证 unit Unit1; interface uses Windows, Mess ...

  2. (转)面试题--JAVA中静态块、静态变量加载顺序详解

    public class Test { //1.第一步,准备加载类 public static void main(String[] args) { new Test(); //4.第四步,new一个 ...

  3. nginx下php频繁卡死502

    解决:[WARNING] fpm_children_bury(), line 215: child 2736 (pool default) exited on signal 15 SIGTERM af ...

  4. 【转】NGUI版虚拟摇杆

    http://blog.csdn.net/anyuanlzh/article/details/40107577 下面是我用nui实现的一个虚拟摇杆. 1,示图 2.代码如下,都有比较详细的注释,就不说 ...

  5. your project contains error(s),please fix them before running your application.错误总结

             Android开发中的问题总是多种多样,今天我来总结一个浪费了我一个晚上的错误T-T:your project contains error(s),please fix them b ...

  6. nrf51822裸机教程-RTC

    RTC0被协议栈使用了.所以在跑蓝牙程序的情况下.RTC0不能使用. RTC相关寄存器如下: EVTEN,EVTENSET,EVTENCLR. 这三个寄存器用来设置是否使能某个事件.(TICK,OVR ...

  7. HBase的几种调优(GC策略,flush,compact,split)

    一:GC的调优 1.jvm的内存 新生代:存活时间较短,一般存储刚生成的一些对象 老年代:存活时间较长,主要存储在应用程序中生命周期较长的对象 永久代:一般存储meta和class的信息 2.GC策略 ...

  8. 一张表有三个字段:id(城市id) Cityname(城市名) Privence(所属省份)如果要统计每个省份有多少城市请用SQL实现。

    一张表有三个字段:id(城市id) Cityname(城市名) Privence(所属省份)如果要统计每个省份有多少城市请用SQL实现.

  9. Intent Flag(转)

    转载自 http://blog.csdn.net/berber78/article/details/7278408 一. intent.setFlags()方法中的参数值含义: 1.FLAG_ACTI ...

  10. 位与(&)常用编程技巧

    补充知识:1)正整数的补码与原码相同:                2)求负整数的补码:原码 符号位不变,数值位各位取反,最后整个数加1得到补码:                3)按位与& ...