`

【Objective-C】词典对象 NSDictionary与NSMutableDictionary

阅读更多


做过Java语言或者 C语言开发的朋友应该很清楚关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便,是一种非常常用的数据结构。在Objective-C语言中,当然也有这方面的支持,词典对象就是做这个事情的,不过在同一个词典对象中可以保存多个不同类型的数据,不像JavaC只能保存声明的相同类型的数据,这一点还是可以解决不少问题的。

词典的关键字为NSDictionaryNSMutableDictionary。对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"] :向可变的词典动态的添加数据,这里的keyname 值是雨松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是苹果公司开发的一种面向对象的编程语言,...以上就是Objective-C中NSDictionary和NSMutableDictionary词典对象的主要使用方法,通过这些方法可以高效地处理键值对数据,实现复杂的数据管理与存储需求。

    Objective-C基础教程(入门教程).pdf

    综上所述,本教程覆盖了Objective-C编程语言的基础知识点,不仅包括语法和结构,还包括与C语言的兼容性、内存管理机制、面向对象编程的核心概念、以及如何在不同操作系统平台上进行开发的介绍。通过这些内容的学习,...

    Objective-C编程全解最新版.pdf.zip

    1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,因此,理解C语言的基本语法是必要的。Objective-C添加了消息传递机制、类和协议等面向对象特性。 2. **消息传递**:Objective-C中的对象通过发送消息来...

    Objective-C程序设计 第6版 pdf

    Objective-C是一种强大的面向对象编程语言,它在Apple的Mac OS X和iOS操作系统中扮演着核心角色,用于构建高质量的应用程序。《Objective-C程序设计 第6版》是学习和深入理解这种语言的重要参考资料,旨在帮助开发者...

    《Objective-C基础教程》中文版(含源代码)

    《Objective-C基础教程》是一本面向初学者的编程书籍,主要涵盖了Objective-C语言的基本概念、语法和编程实践,尤其适合那些想要踏入iOS应用开发领域的学习者。Objective-C是Apple公司开发的面向对象的编程语言,它...

    Objective-C---How-to-Create-And-Use-NSDictionary-And-NSMutableDictionary-Latest-2017-Hindi-:源代码-How to use the source code

    Objective-C-如何创建和使用NSDictionary和NSMutableDictionary-Latest-2017-Hindi- 视频:-Yogesh Patel在Objective-C中使用NSDictionary和NSMutableDictionary的介绍。 在本频道中,我将在多部视频中讲授大多数...

    这是一个基于Objective-C语言的基础案例集 旨在用于给初学者快速了解Objective-C语言的语法 .zip

    1. 类与对象:Objective-C中的所有事物都是对象,它们由类定义。类是一个模板,描述了对象的属性(实例变量)和行为(方法)。对象是类的实例,拥有类定义的属性和行为。例如,可以创建一个名为`Person`的类,包含...

    Learn Objective-C 中文版 v2

    - **类与对象**:Objective-C基于Smalltalk的面向对象概念,所有数据都是通过类来表示的,类定义了对象的属性和行为。 - **继承**:Objective-C支持类的继承,允许子类从父类那里继承属性和方法,实现代码重用。 ...

    Objective-C基础教程(Learn Objective-C)随书源码下载

    2. **类与对象**: 类是对象的蓝图,定义了对象的属性(ivar,实例变量)和行为(方法)。Objective-C中的对象是通过类创建的,每个对象都有一个唯一的身份,并且可以接收和响应消息。 3. **继承**: Objective-C...

    Object-C语言教程:Objective-C 简介

    Objective-C是一种主要应用于苹果操作系统上的编程语言,它是C语言的一种扩展,支持面向对象编程特性。Objective-C最初由Pike International公司的Brad Cox和Tom Love于1983年设计,并在1986年由NEXTSTEP系统引入。...

    Learn objective-c on the mac配套实例代码

    2. **类与对象**: 类是对象的蓝图,定义了对象的行为和属性。Objective-C 使用 `@interface` 关键字声明类,`@implementation` 关键字实现类。类可以继承其他类,实现多态性。 3. **协议(Protocols)**: Objective...

    Objective-C

    Objective-C是在C语言的基础上扩展了Smalltalk式的面向对象特性,使得它既有C语言的强大功能,又具备了面向对象编程的灵活性。 在Objective-C中,类是所有对象的基础。类定义了一组属性(实例变量)和方法(函数)...

    Objective-C专业书籍汇总pdf

    C++程序员会发现Objective-C与C++有显著的不同,尤其是在面向对象特性上。书中的内容可能包括Objective-C的动态特性,如运行时类型信息和消息转发,这些都是C++所缺乏的。此外,可能会对比两种语言的类系统,解释...

    objective-c编程 第2版=objective-c program 2nd edition_13889311

    2. **类与对象**:Objective-C的核心是类和对象。书中会详细解释如何定义类,创建对象,以及如何通过方法(selector)来实现对象间的交互。此外,可能会介绍分类(Category)和协议(Protocol),这是Objective-C...

    iOS objective-c 实体类对象的序列化为Json及反序列化

    Objective-C的实体类对象序列化和反序列化是数据处理的关键环节,它涉及到如何将内存中的对象转换为可存储或传输的数据格式,如JSON(JavaScript Object Notation),以及如何将接收到的JSON数据还原为对象。...

    Objective-C - Learning Objective-C 2.0 Second Edition

    #### 七、类与对象 第六章《Classes and Objects》详细阐述了如何定义和使用类及对象。本章通过实例演示了如何创建类、定义方法、使用实例变量等基本操作,同时介绍了Objective-C中的内存管理策略。 #### 八、类...

    好学的Objective-c(高清版)PDF

    Objective-C的起源可以追溯到C语言,它扩展了C的语法,加入了Smalltalk的面向对象特性。在Objective-C中,类是对象的蓝图,对象则是程序中的基本工作单元。理解类和对象的概念是学习Objective-C的第一步。 首先,你...

    Objective-C基础教程源代码 Learn objective-C on the Mac Mark Dalrymple著书

    Objective-C是一种强大的面向对象编程语言,特别是在Apple的iOS和macOS平台上广泛使用。它是C语言的超集,融入了Smalltalk的关键概念,如消息传递和动态类型。《Learn Objective-C on the Mac》由Mark Dalrymple撰写...

    Objective-C Fundamentals

    Objective-C提供了多种集合类,如数组(NSArray、NSMutableArray)、字典(NSDictionary、NSMutableDictionary)和集合(NSSet、NSMutableSet)。这些集合类允许开发者以不同的方式存储和管理数据集合。 在构建自己...

    Effective Objective-C 2.0

    8. 集合类:Objective-C提供了一系列集合类,如NSArray、NSDictionary和NSSet等,用于存储和管理数据集合。集合类遵循了不可变(immutable)和可变(mutable)的区分。 9. GCD和NSOperation:GCD(Grand Central ...

Global site tag (gtag.js) - Google Analytics