字典相当于Java中的Map, 有key和value
//
// main.m
// NSDictionary
//
// Created by rayln on 13-9-6.
// Copyright (c) 2013年 rayln. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSDictionary *dic = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"a",@"b",@"c",@"d", nil] forKeys:[NSArray arrayWithObjects:@"k1",@"k2",@"k3",@"k4", nil]];
NSDictionary *dic2 = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"a",@"b",@"c",@"d", nil] forKeys:[NSArray arrayWithObjects:@"k1",@"k2",@"k3",@"k4", nil]];
//包含的元素个数
[dic count]; //返回4
//比较2个字典是否相等
[dic isEqualToDictionary:dic2];
//根据key取出value
[dic objectForKey:@"k1"]; //输出a
//字典写入文件中
[dic writeToFile:@"/Users/rayln/Desktop/text.txt" atomically:YES];
//从字典读取数据
[NSDictionary dictionaryWithContentsOfFile:@"/Users/rayln/Desktop/text.txt"];
//返回所有的key
[dic allKeys];
//返回所有的value
[dic allValues];
#pragma mark - 用法
//另一种声称dictionary方法
NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:
@"v6", @"k6",
@"v1", @"k1",
@"v1", @"k2",
@"v1", @"k3",
@"v4", @"k4", nil];
//返回包含value的所有key
[dic3 allKeysForObject:@"v1"]; //输出[k1, k2, k3]
//对应多个key找到多个value, notFoundMarker参数是表示如果找不到对应的key,则value值由notFoundMarker替代
[dic3 objectsForKeys:[NSArray arrayWithObjects:@"k1", @"k2", @"k5", nil] notFoundMarker:@"notfound"]; //输出[v1, v1, notfound]
#pragma mark - 字典遍历
//遍历所有key
for (id key in dic3) {
NSLog(@"%@", key);
}
//key的迭代器
NSEnumerator *enumKey = [dic3 keyEnumerator];
id key = nil;
while (key = [enumKey nextObject]) {
NSLog(@"key=%@", key);
}
//对象迭代器 不演示了!
[dic3 objectEnumerator];
//block遍历- stop表示是否停止循环 如果stop=YES, 则停止循环
[dic3 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"block-%@=%@",key,obj);
}];
#pragma mark - 字典排序
//根据value进行排序,返回排好序的key的Array
NSArray *arr = [dic3 keysSortedByValueUsingSelector:@selector(compare:)]; //返回[k3, k2, k1, k4, k6]
//block排序,也是根据value进行排序,返回排好序的key的Array
arr = [dic3 keysSortedByValueUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
NSComparisonResult *result = [obj1 compare:obj2];
return result;
}];//返回[k3, k2, k1, k4, k6]
NSLog(@"%@", arr);
#pragma mark - 内存管理
//当字典有对象时,字典中每个对象都会做一次retain操作,当字典释放时就会做一次release操作
}
return 0;
}
分享到:
相关推荐
在本文中,我们将探讨如何使用NSData与其他类型,特别是NSDictionary和JSON数据进行转换。 首先,NSData允许开发者将各种数据类型(如结构体、图像等)转换为二进制格式,以便于存储或在网络上传输。例如,在提供的...
在iOS开发中,NSData和NSDictionary是两种非常基础且重要的数据类型。NSData用于存储二进制数据,而NSDictionary则用于存储键值对的数据结构。在实际应用中,我们常常需要将这两种类型进行相互转换,以便于数据的...
常见的数据交换格式有三种:NSDictionary(苹果特有的键值对数据结构)、JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)。这三种格式各有特点,应用场景不同,但有时我们需要将它们之间...
`swift-Objective-C&Swift库可以轻松将NSDictionary映射到模型对象与Alamofire完美配合`这一标题揭示了一个高效的解决方案,它结合了Objective-C和Swift语言的优势,使得从JSON数据到自定义模型对象的转换变得简单...
NSDictionary-NilSafe, 发光时我们如何让NSDictionary安全 nsdictionary-nilsafe在发光的时候我们如何使NSDictionary安全,更多的在发光科技博客上阅读。 示例要运行示例项目,克隆 repo,然后从示例目录中运行 pod ...
1.字典使用Key-Value的形式储存数据,是关键字... Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象)。然后你就可以用这个关键字来查找相应的数值。
M13OrderedDictionary, 带有有序对象和键的NSDictionary M13OrderedDictionaryM13OrderedDictionary是NSArray和NSDictionary之间的交叉。 它包含一个有序的对象和键列表。 所有这些都可以通过索引或者键访问。 这里...
这些类包括NSArray、NSSet、NSEnumerator和NSDictionary,以及它们的可变版本NSMutableArray、NSMutableSet和NSMutableDictionary。这些类提供了各种操作来处理对象的集合,如添加、删除、查找等。以下是关于这些类...
本示例是关于如何将一个`NSDictionary`对象转换为`JSONString`的iOS演示。`NSDictionary`是Objective-C中的一个核心数据结构,用于存储键值对,而`JSONString`则是将这些数据序列化成JSON格式的字符串,方便在网络上...
在iOS开发中,`NSArray` 和 `NSDictionary` 是两种非常重要的数据结构,分别用于存储有序的元素集合(数组)和键值对集合(字典)。然而,在处理实际数据时,我们常常会遇到空值(nil 或 NSNull)的情况,这可能导致...
在iOS和macOS开发中,我们经常使用Foundation框架中的`NSDictionary`来存储键值对数据。`NSDictionary`要求键必须是不可变的、遵循`NSCopying`协议的对象,通常是`NSString`实例。然而,有时我们需要将自定义类作为...
在Objective-C中,`NSDictionary`是用于存储键值对的核心数据结构。自定义键类时,需要遵循一些关键点以确保正确性和效率。本篇文章将深入探讨这些注意事项,旨在帮助开发者更好地理解和使用自定义键来操作`...
本示例“ios demo, JSONString to NSDictionary”聚焦于将JSON字符串转化为Objective-C中的NSDictionary对象,这是iOS开发中的常见操作。接下来,我们将深入探讨这个过程以及相关知识点。 首先,理解JSON的基本结构...
在iOS和Objective-C(OC)开发中,NSArray、NSSet和NSDictionary是Foundation框架中的核心数据结构,它们用于存储和管理对象。这些容器类提供了多种方法来操作和访问存储的数据,是编写应用程序时不可或缺的部分。 ...
在iOS编程中,NSArray、NSDictionary和NSSet是常用的集合类,它们提供了存储和操作对象的方式。这些集合类在实际开发中扮演着重要角色,理解和优化它们的使用能够显著提高代码的性能和准确性。以下是对这些集合类...
### 详尽解析:NSDictionary在Objective-C中的应用与特性 #### 核心概念与功能 `NSDictionary`是Cocoa框架中一个重要的类,用于管理键值对数据集合。它提供了强大的功能来存储、检索和操作数据,是Objective-C中...
NSString NSArray NSDictionary 方法名释义
在iOS开发中,NSDictionary是Objective-C中的一个核心数据结构,它是Foundation框架的一部分,用于存储键值对(key-value pairs)的数据集合。这个压缩包“NSDictionary.zip”可能包含了一个示例项目或者教学资源,...
object-c基础语法NSDictionary, 适合初学者,主要学习字典的操作,包括字典创建、长度、通过KEY找到value、获取所有key、获取所有value、以及可变字典的定义、可变字典添加值、可变字典的删除等