字典就是关键字及其定义(描述)的集合。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. 耦合 Coupling the object-oriented paradigm && data coupling

    Computer Science An Overview _J. Glenn Brookshear _11th Edition 耦 两个人一起耕地 one of the benefits of the ...

  2. Raft

    http://thesecretlivesofdata.com/raft/ https://github.com/coreos/etcd   1 Introduction Consensus algo ...

  3. Solr4+IKAnalyzer的安装配置

    一.下载Solr4.10.2 我们以Windows版本为例,solr-4.10.2.zip是目前最新版本,下载地址: http://www.apache.org/dyn/closer.cgi/luce ...

  4. ArcGIS中利用ArcMap将地理坐标系转换成投影坐标系(从WKID=4326到WKID=102100)

    原文:ArcGIS中利用ArcMap将地理坐标系转换成投影坐标系(从WKID=4326到WKID=102100) 对于非地理专业的开发人员,对与这些生涩的概念,我们不一定都要了解,但是我们要理解,凡是 ...

  5. [LeetCode]题解(python):049-Groups Anagrams

    题目来源 https://leetcode.com/problems/anagrams/ Given an array of strings, group anagrams together. For ...

  6. Round and Round We Go

    http://acm.hdu.edu.cn/showproblem.php?pid=1313 考查大整数与小整数相乘 #include<iostream> #include<cstd ...

  7. OO之美2

    面向对象并没有想象中那么神秘,以生活的现实眼光来看更是如此.把面向对象深度浓缩起来,可以概括为: ⑴目标:重用,扩展,兼容 ⑵核心:低耦合,高内聚 ⑶手段:封装变化 ⑷思想:面向接口编程,面向抽象编程 ...

  8. JSONModel 遇见关键字为id或者description

    像id.description这样的,都是系统自带的,要解析它,得特殊处理一下.我用的是JSONModel { "contentList": [ { "id": ...

  9. strlen

    char c1[] = "sdfa";//系统自动添加结束字符 \0 char c2[] = {'1','2','3'};//这样赋值的话,要自己加上结束字符 \0 printf( ...

  10. Selenium2学习-010-WebUI自动化实战实例-008-Selenium 操作下拉列表实例-Select

    此文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,对下拉列表框 Select 的操作. 下拉列表是 Web UI 自动化测试过程中使用率非常高的,通常有两种形式的下拉列表,一 ...