加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

NS类 - NSDictionary

(2013-04-14 11:06:01)
标签:

nsdictionary

it

分类: Mac/IOS那些事

NSDictionary

 

字典就是关键字及其定义(描述)的集合。Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象)。然后你就可以用这个关键字来查找相应的数值。
不同于数组,字典(也被称为散列表或关联数组)使用的是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。

注意:NSDictionary 是一种hash表, 是乱序的, 如果想要顺序就用NSArray

     从NSDictionary中copy出来的某个值,要注意它的类型是否和接收的类型一致,

     否则若在NSArray的containsObject函数中不会返回true。

NSMutableDictionary的dictionary方法可以创建一个可变字典,也可以使用dictionaryWithCapaticy:。
使用 setObject:forkey: 方法添加字典元素,如果关键字已存在,则用新植替换旧值。
类似的,NSMutableDictionary类允许随意添加或删除字典元素。

可使用dictionaryWithObjectsAndKeys来创建字典
查询字典的值:objectForKey
添加元素:setObject:forkey:
删除元素:removeObjectForKey:

Example:

|--环境 xCode Version 4.6.1 (4H512)

|--Dict.h

#import <Foundation/Foundation.h>

@interface NSDict : NSObject
{
    NSString* _className;
    NSString* _Name;
}
@property (retain) NSString* className;
@property (retain) NSString* Name;

@end

|--Dict.m

#import "NSDict.h"

@implementation NSDict
@synthesize className=_className;
@synthesize Name = _Name;
@end

|--main.m

#import <Foundation/Foundation.h>
#import "NSDict.h"
int main(int argc, const char * argv[])
{

    @autoreleasepool {
        NSDict* Dict1 = [NSDict new];
        NSDict* Dict2 = [NSDict new];
        NSDict* Dict3 = [NSDict new];
        NSDict* Dict4 = [NSDict new];
       
        NSDictionary *myTionary=[NSDictionary dictionaryWithObjectsAndKeys:
                               Dict1,@"dig1",
                               Dict2,@"dig2",
                               Dict3,@"dig3",
                               Dict4,@"dig4",
                               nil];
        NSDict * getDig3 = [myTionary objectForKey:@"dig3"];
        [getDig3 setClassName:@"EnglishName"];
        [getDig3 setName:@"braveryhui"];
        for(id key in myTionary)
        {
            NSLog(@"id:%@,key:%@,className:%@ name:%@",key,[myTionary objectForKey:key],[[myTionary objectForKey:key] className],[[myTionary objectForKey:key]Name]);
        }
        NSLog(@"dig3Classname:%@,name:%@",[getDig3 className],[getDig3 Name]);
         // NSDictionary无法添加或删除元素,可以使用NSMutableDictionary.
        NSMutableDictionary *newMytionary =[NSMutableDictionary dictionaryWithObjectsAndKeys:
                                            Dict1,@"newdig1",
                                            Dict2,@"newdig2",
                                            Dict3,@"newdig3",
                                            Dict4,@"newdig4",
                                            nil];
      
        NSLog(@"");
        //删除其中一条
        [newMytionary removeObjectForKey:@"newdig2"];
        for(id key in newMytionary)
        {
           
            NSLog(@"id:%@,key:%@,className:%@ name:%@",key,[newMytionary objectForKey:key],[[newMytionary objectForKey:key] className],[[newMytionary objectForKey:key]Name]);
        }
       
    }
    return 0;
}
|--output:

2013-04-14 12:13:42.875 NSDictionary[5133:303] id:dig3,key:<NSDict: 0x10010bd30>,className:EnglishName name:braveryhui
2013-04-14 12:13:42.900 NSDictionary[5133:303] id:dig1,key:<NSDict: 0x10010bcc0>,className:(null) name:(null)
2013-04-14 12:13:42.901 NSDictionary[5133:303] id:dig4,key:<NSDict: 0x10010bd50>,className:(null) name:(null)
2013-04-14 12:13:42.902 NSDictionary[5133:303] id:dig2,key:<NSDict: 0x10010bd10>,className:(null) name:(null)
2013-04-14 12:13:42.902 NSDictionary[5133:303] dig3Classname:EnglishName,name:braveryhui
2013-04-14 12:13:42.903 NSDictionary[5133:303]
2013-04-14 12:13:42.903 NSDictionary[5133:303] id:newdig4,key:<NSDict: 0x10010bd50>,className:(null) name:(null)
2013-04-14 12:13:42.904 NSDictionary[5133:303] id:newdig3,key:<NSDict: 0x10010bd30>,className:EnglishName name:braveryhui
2013-04-14 12:13:42.904 NSDictionary[5133:303] id:newdig1,key:<NSDict: 0x10010bcc0>,className:(null) name:(null)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有