字典:NSDictionary-回忆

2024-06-06 14:32
文章标签 字典 回忆 nsdictionary

本文主要是介绍字典:NSDictionary-回忆,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

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

1  //
2   //  MyClass.h
3   //  FoundationKit4
4   //
5   //  Created by Elf Sundae on 10/22/10.
6  //  Copyright 2010 Control-Strength. All rights reserved.
7  //
8 
9  #import  < Cocoa / Cocoa.h >
10 
11 
12  @interface MyClass : NSObject
13  {
14  NSString  * firstName;
15  NSString  * lastName;
16  }
17 
18 
19  -  ( void ) setFirstName:(NSString  * )m_firstName;
20  -  (NSString  * ) firstName;
21 
22  -  ( void ) setLastName: (NSString  * ) m_lastName;
23  -  (NSString  * ) lastName;
24 
25 
26  @end

 

1  //
2  //  MyClass.m
3  //  FoundationKit4
4  //
5  //  Created by Elf Sundae on 10/22/10.
6  //  Copyright 2010 Control-Strength. All rights reserved.
7  //
8 
9  #import  " MyClass.h "
10 
11 
12  @implementation MyClass
13 
14  -  ( void ) setFirstName:(NSString  * )m_firstName{
15 
16  firstName  =  m_firstName;
17  }
18  -  (NSString  * ) firstName{
19  return  firstName;
20  }
21 
22  -  ( void ) setLastName: (NSString  * ) m_lastName{
23  lastName  =  m_lastName;
24  }
25  -  (NSString  * ) lastName{
26  return  lastName;
27  }
28 
29 
30  -  (NSString  * ) description
31  {  
32  if  (firstName  ==  nil  ||  lastName  ==  nil) {
33  return  @" No Name found. " ;
34  else  {
35  return  [NSString stringWithFormat: @" %@ %@ " ,
36  firstName,lastName];
37  }
38 
39  }
40 
41  @end

 

1  /*
2  * 示例字典(NSDictionary,NSMutableDictionary)操作
3  *
4  * Elf Sundae 10/22/2010
5  */
6 
7  #import  < Foundation / Foundation.h >
8  #import  " MyClass.h "
9 
10  int  main ( int  argc,  const  char  *  argv[]) {
11  NSAutoreleasePool  *  pool  =  [[NSAutoreleasePool alloc] init];
12 
13  //  创建字典:dictionaryWithObjectsAndKeys:
14  MyClass  * my1  =  [MyClass  new ];
15  MyClass  * my2  =  [MyClass  new ];
16  MyClass  * my3  =  [MyClass  new ];
17  MyClass  * my4  =  [MyClass  new ];
18 
19  NSDictionary  * myClassDict;
20  myClassDict  =  [NSDictionary dictionaryWithObjectsAndKeys:
21  my1,  @" my1 " ,
22  my2,  @" my2 " ,
23  my3,  @" my3 " ,
24  my4,  @" my4 " , nil];
25  //  获取值 objectForKey
26  MyClass  * sub  =  [myClassDict objectForKey:  @" my3 " ];
27  if  (sub  ==  nil) {
28  exit( 1 );
29  }
30  [sub setFirstName: @" Elf " ];
31  [sub setLastName: @" Sundae " ];
32 
33  NSLog( @" 修改数据: %@ " ,sub);
34 
35  //  遍历字典
36  NSLog( @" ***遍历字典myClassDict如下: " );
37  for  (id key  in  myClassDict)
38  {
39  NSLog( @" key: %@ ,value: %@ " ,key,[myClassDict objectForKey:key]);
40  }
41  NSLog( @" ***遍历字典myClassDict结束。 " );
42 
43  //  MARK: *** 添加新元素 ***  
44  //  NSDictionary无法添加或删除元素,可以使用NSMutableDictionary.
45  NSMutableDictionary  * myNewDict  =  [NSMutableDictionary dictionary];
46  //  将原有字典添加到新字典的一对元素
47  // [myNewDict setObject:myClassDic forKey:@"旧的不可变字典myClassDic"];
48 
49  //  遍历添加已有数据(原字典)
50  for  (id key  in  myClassDict)
51  {
52  [myNewDict setObject: [myClassDict objectForKey:key]
53  forKey:key];
54  }
55 
56  NSString  * newkey  =  @" newKey " ;
57  NSString  * newValue  =  @" This is a new Value. " ;
58  [myNewDict setObject:newValue forKey:newkey];
59 
60  //  遍历myNewDict
61  NSLog( @" ***遍历字典myNewDict如下: " );
62  for  (id key  in  myNewDict)
63  {
64  NSLog( @" key: %@ ,value: %@ " ,key,[myNewDict objectForKey:key]);
65  }
66  NSLog( @" ***遍历字典myNewDict结束。 " );
67 
68  //  删除元素
69  [myNewDict removeObjectForKey:  @" newKey " ];
70 
71  //  遍历myNewDict
72  NSLog( @" ***遍历字典myNewDict如下: " );
73  for  (id key  in  myNewDict)
74  {
75  NSLog( @" key: %@ ,value: %@ " ,key,[myNewDict objectForKey:key]);
76  }
77  NSLog( @" ***遍历字典myNewDict结束。 " );
78 
79  [pool drain];
80  return  0 ;
81  }

 

 

// 输出结果(省略日期 时间等信息)
修改数据: Elf Sundae
***遍历字典myClassDict如下:
key: my3 ,value: Elf Sundae
key: my4 ,value: No Name found.
key: my1 ,value: No Name found.
key: my2 ,value: No Name found.
***遍历字典myClassDict结束。
***遍历字典myNewDict如下:
key: newKey ,value: This is a new Value.
key: my3 ,value: Elf Sundae
key: my4 ,value: No Name found.
key: my1 ,value: No Name found.
key: my2 ,value: No Name found.
***遍历字典myNewDict结束。
***遍历字典myNewDict如下:
key: my3 ,value: Elf Sundae
key: my4 ,value: No Name found.
key: my1 ,value: No Name found.
key: my2 ,value: No Name found.
***遍历字典myNewDict结束。

这篇关于字典:NSDictionary-回忆的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036377

相关文章

POJ2001字典树

给出n个单词,求出每个单词的非公共前缀,如果没有,则输出自己。 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.io.UnsupportedEncodingException;

令人不想回忆的DDos

免责声明:本文仅做分享!!!    目录 DDos 介绍: 常见攻击方式: 基于TCP协议的攻击 基于icmp协议的攻击 web压力测试 攻击----> 1-工具脚本 MHDDos项目 LOIC(低轨道离子炮) HOIC(高轨道离子炮) HULK OWASP HTTP POST Tors Hammer 2-在线平台 防御----> 1-高防 2-C

python 实现第k个字典排列算法

第k个字典排列算法介绍 "第k个字典排列"算法通常指的是在给定的字符集合(例如,字符串中的字符)中,找到所有可能排列的第k个排列。这个问题可以通过多种方法解决,但一个常见且高效的方法是使用“下一个排列”算法的变种,或称为“第k个排列”的直接算法。 方法一:使用“下一个排列”的变种 生成所有排列:首先生成所有排列,但显然这种方法对于较大的输入集合是不切实际的,因为它涉及到大量的计算和存储。 排序

POJ3617(字典序最小问题)

书中43页 此题有坑点,PE了40分钟.也是醉了....题目要求每80个字符才换行,而且最后一个如果恰好就不用换,这不是无聊嘛....... #include <iostream>#include <cstdio>#include <cstring>using namespace std;int n,m;char S[2100],P[2100];int main(){#ifd

POJ 2001 Shortest Prefixes(字典树入门)

题目: http://poj.org/problem?id=2001 题意: 找到多个字符串中,各自唯一的最短子串,例如 carte 与 carce 各自唯一的最短子串为cart与carc,即不会与其它字符串的子串重复。 思路: 字典树 解题心得: 更新关键值的时机很重要 代码: #include<stdio.h>#include<string>typedef str

Oracle数据库(数据字典、表空间、表的创建、视图)

知识点引用: http://www.2cto.com/database/201207/142874.html http://blog.csdn.net/haiross/article/details/11772847 一. 彻底卸载Oracle 方式1、重装操作系统 方式2、 2.1 DBCA删除数据库开始 → 程序 → Oracle → 开发与移植工具 → Datab

Python的字符串,list,tuple,set,字典操作详解

1.字符串python是要创建成字符串的元素,其中的每个字母都是单一的子串,把它放在' '单引号或是'' ''引号中,就完成了python 字符串的创建。#str强制转换>>> a=123>>> b=str(a) #将整数转化为字符串>>> b'123'>>> a=[1,2,3]>>> b=str(a) #将list转化为字符串>>> b'[1, 2, 3]'#字符串下

阿里大数据一次简单而失败的面试题回忆

一面 简单介绍一下自己以及自己做过的项目;Java HashMap 是不是线程安全的?为什么?请用 Java 写个单例模式知道几种 GC 算法?如何实现一个高效的单项列表逆向输出?数据湖和数据仓库有什么区别?详细介绍下 Flink 的 Checkpoint 执行机制(分布式快照)算法题:寻找两个正序数组的中位数 二面 如何在两个进程间共享数据?线程呢?如何在 main 函数里面等待一个线程执

OC中数组、字典、集合常用方法的运用

/* ====================== 一 NSArray========================          1.创建对象          1.1初始化方法(2) //一般程序有问题先检查初始化          1.2类方法          1.3字面量方法          2.数组查找          2.1通过下标访问对象[ .[i]]

python pickle 模块用于保存python内存数据(包括实例对象、字典、列表等所有python中的数据)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言基本用法 前言 Python 的 pickle 模块用于序列化和反序列化 Python 对象。这意味着你可以将 Python 对象(如列表、字典、类实例等)转换为字节流(序列化),并将其保存到文件中或在网络上传输,然后在需要的时候将其恢复为原始 Python 对象(反序列化)。 常见用途