做过Java语言或者 C语言开发的朋友应该很清楚关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便,是一种非常常用的数据结构。在Objective-C语言中,当然也有这方面的支持,词典对象就是做这个事情的,不过在同一个词典对象中可以保存多个不同类型的数据,不像Java与C只能保存声明的相同类型的数据,这一点还是可以解决不少问题的。
词典的关键字为NSDictionary与NSMutableDictionary。对OC稍有认识的朋友应该从关键字的结构就可以看出这两个的区别。很明显前者为不可变词典,或者为可变词典。
1.创建不可变词典
[NSDictionary dictionaryWithObjectsAndKeys:..] : 使用键值对儿直接创建词典对象,结尾必需使用nil标志结束。
[NSDictionary initWithObjectsAndKeys:..] :使用键值对儿初始化词典对象,结尾必需使用nil标志结束。
[dictionary count]: 得到词典的长度单位。
[dictionary keyEnumerator]: 将词典的所有KEY储存在NSEnumerator中,NSEnumerator很像Java语言中的迭代器,使用快速枚举可以遍历词典中所有储存KEY值。
[dictionary objectEnumerator]: 将词典的所有value储存在NSEnumerator中,用法和上面差不多可用来遍历KEY对应储存的Value值。
[dictionary objectForKey:key]: 通过传入KEY对象可以拿到当前KEY对应储存的值。
#import <UIKit/UIKit.h>
#import "MyClass.h"
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//添加我们的测试代码
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"雨松MOMO",@"name",@"15810463139",@"number", nil];
//得到词典的数量
int count = [dictionary count];
NSLog(@"词典的数量为: %d",count);
//得到词典中所有KEY值
NSEnumerator * enumeratorKey = [dictionary keyEnumerator];
//快速枚举遍历所有KEY的值
for (NSObject *object in enumeratorKey) {
NSLog(@"遍历KEY的值: %@",object);
}
//得到词典中所有Value值
NSEnumerator * enumeratorValue = [dictionary objectEnumerator];
//快速枚举遍历所有Value的值
for (NSObject *object in enumeratorValue) {
NSLog(@"遍历Value的值: %@",object);
}
//通过KEY找到value
NSObject *object = [dictionary objectForKey:@"name"];
if (object != nil) {
NSLog(@"通过KEY找到的value是: %@",object);
}
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
2.创建可变词典对象
NSMutableDictionary 是NSDictionary的子类,所以继承了NSDictionary的方法。
[NSMutableDictionary dictionaryWithCapacity:10] : 创建一个可变词典初始指定它的长度为10.,动态的添加数据如果超过10这个词典长度会自动增加,所以不用担心数组越界。
[NSMutableDictionary initWithCapacity:10] :只是初始化一个词典的长度为10。
[dictionary setObject: @"雨松MOMO" forKey: @"name"] :向可变的词典动态的添加数据,这里的key是name 值是雨松MOMO。如果词典中存在这个KEY的数据则直接替换这个KEY的值。
[dictionary removeAllObjects..] : 删除掉词典中的所有数据。
[dictionary removeObjectForKey..] :删除掉词典中指定KEY的数据。
#import <UIKit/UIKit.h>
#import "MyClass.h"
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//添加我们的测试代码
//创建词典对象,初始化长度为10
NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:10];
//向词典中动态添加数据
[dictionary setObject:@"雨松MOMO" forKey:@"name"];
[dictionary setObject:@"15810463139" forKey:@"number"];
//通过KEY找到value
NSObject *object = [dictionary objectForKey:@"name"];
if (object != nil) {
NSLog(@"通过KEY找到的value是: %@",object);
}
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
over~!
分享到:
相关推荐
Objective-C是苹果公司开发的一种面向对象的编程语言,...以上就是Objective-C中NSDictionary和NSMutableDictionary词典对象的主要使用方法,通过这些方法可以高效地处理键值对数据,实现复杂的数据管理与存储需求。
综上所述,本教程覆盖了Objective-C编程语言的基础知识点,不仅包括语法和结构,还包括与C语言的兼容性、内存管理机制、面向对象编程的核心概念、以及如何在不同操作系统平台上进行开发的介绍。通过这些内容的学习,...
1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,因此,理解C语言的基本语法是必要的。Objective-C添加了消息传递机制、类和协议等面向对象特性。 2. **消息传递**:Objective-C中的对象通过发送消息来...
Objective-C是一种强大的面向对象编程语言,它在Apple的Mac OS X和iOS操作系统中扮演着核心角色,用于构建高质量的应用程序。《Objective-C程序设计 第6版》是学习和深入理解这种语言的重要参考资料,旨在帮助开发者...
《Objective-C基础教程》是一本面向初学者的编程书籍,主要涵盖了Objective-C语言的基本概念、语法和编程实践,尤其适合那些想要踏入iOS应用开发领域的学习者。Objective-C是Apple公司开发的面向对象的编程语言,它...
Objective-C-如何创建和使用NSDictionary和NSMutableDictionary-Latest-2017-Hindi- 视频:-Yogesh Patel在Objective-C中使用NSDictionary和NSMutableDictionary的介绍。 在本频道中,我将在多部视频中讲授大多数...
1. 类与对象:Objective-C中的所有事物都是对象,它们由类定义。类是一个模板,描述了对象的属性(实例变量)和行为(方法)。对象是类的实例,拥有类定义的属性和行为。例如,可以创建一个名为`Person`的类,包含...
- **类与对象**:Objective-C基于Smalltalk的面向对象概念,所有数据都是通过类来表示的,类定义了对象的属性和行为。 - **继承**:Objective-C支持类的继承,允许子类从父类那里继承属性和方法,实现代码重用。 ...
2. **类与对象**: 类是对象的蓝图,定义了对象的属性(ivar,实例变量)和行为(方法)。Objective-C中的对象是通过类创建的,每个对象都有一个唯一的身份,并且可以接收和响应消息。 3. **继承**: Objective-C...
Objective-C是一种主要应用于苹果操作系统上的编程语言,它是C语言的一种扩展,支持面向对象编程特性。Objective-C最初由Pike International公司的Brad Cox和Tom Love于1983年设计,并在1986年由NEXTSTEP系统引入。...
2. **类与对象**: 类是对象的蓝图,定义了对象的行为和属性。Objective-C 使用 `@interface` 关键字声明类,`@implementation` 关键字实现类。类可以继承其他类,实现多态性。 3. **协议(Protocols)**: Objective...
Objective-C是在C语言的基础上扩展了Smalltalk式的面向对象特性,使得它既有C语言的强大功能,又具备了面向对象编程的灵活性。 在Objective-C中,类是所有对象的基础。类定义了一组属性(实例变量)和方法(函数)...
C++程序员会发现Objective-C与C++有显著的不同,尤其是在面向对象特性上。书中的内容可能包括Objective-C的动态特性,如运行时类型信息和消息转发,这些都是C++所缺乏的。此外,可能会对比两种语言的类系统,解释...
2. **类与对象**:Objective-C的核心是类和对象。书中会详细解释如何定义类,创建对象,以及如何通过方法(selector)来实现对象间的交互。此外,可能会介绍分类(Category)和协议(Protocol),这是Objective-C...
Objective-C的实体类对象序列化和反序列化是数据处理的关键环节,它涉及到如何将内存中的对象转换为可存储或传输的数据格式,如JSON(JavaScript Object Notation),以及如何将接收到的JSON数据还原为对象。...
#### 七、类与对象 第六章《Classes and Objects》详细阐述了如何定义和使用类及对象。本章通过实例演示了如何创建类、定义方法、使用实例变量等基本操作,同时介绍了Objective-C中的内存管理策略。 #### 八、类...
Objective-C的起源可以追溯到C语言,它扩展了C的语法,加入了Smalltalk的面向对象特性。在Objective-C中,类是对象的蓝图,对象则是程序中的基本工作单元。理解类和对象的概念是学习Objective-C的第一步。 首先,你...
Objective-C是一种强大的面向对象编程语言,特别是在Apple的iOS和macOS平台上广泛使用。它是C语言的超集,融入了Smalltalk的关键概念,如消息传递和动态类型。《Learn Objective-C on the Mac》由Mark Dalrymple撰写...
Objective-C提供了多种集合类,如数组(NSArray、NSMutableArray)、字典(NSDictionary、NSMutableDictionary)和集合(NSSet、NSMutableSet)。这些集合类允许开发者以不同的方式存储和管理数据集合。 在构建自己...
8. 集合类:Objective-C提供了一系列集合类,如NSArray、NSDictionary和NSSet等,用于存储和管理数据集合。集合类遵循了不可变(immutable)和可变(mutable)的区分。 9. GCD和NSOperation:GCD(Grand Central ...