Foundition API - NSDictionary学习

第一次学习英文官方文档,有很多不懂得地方,暂时空着,回头查询中文文档再补全,如果有大神愿意指点,请留言,感谢!!!

1、创建一个dictionary

//1>直接创建一个空dictionary
+ (instancetype)dictionary;
//demo
NSDictionary *dict = [NSDictionary dictionary];

//2>获取本地路径下文件中的dictionary
+ (NSDictionary<KeyType,ObjectType> *)dictionaryWithContentsOfFile:(NSString *)path;
//demo
NSDictionary *dict1 = [NSDictionary dictionaryWithContentsOfFile:path];
//path是一个绝对路径或者是相对路径,由这个路径获取的文件内容必须是一个字典,否则dict1为nil。

//3>获取接口返回的dictionary
+ (NSDictionary<KeyType,ObjectType> *)dictionaryWithContentsOfURL:(NSURL *)url;
//demo
NSDictionary *dict1 = [NSDictionary dictionaryWithContentsOfURL:url];
//url是一个接口,由这个接口获取的文件内容必须是一个字典,否则dict1为nil。

//4>将一个dictionary中的key和value复制到一个新的dictionary中
+ (instancetype)dictionaryWithDictionary:(NSDictionary<KeyType,ObjectType> *)dict;
//demo
NSDictionary *dict1 = [NSDictionary dictionaryWithDictionary:dict];
//dict:一个dictionary

//5>创建一个只有一个key和value的dictionary
+ (instancetype)dictionaryWithObject:(ObjectType)object forKey:(id<NSCopying>)key;
//demo
NSDictionary *dict1 = [NSDictionary dictionaryWithObject:value forKey:key];

//6>创建一个有多个value和key的dictionary
+ (instancetype)dictionaryWithObjects:(NSArray<ObjectType> *)objects forKeys:(NSArray<id<NSCopying>> *)keys;
//demo
NSDictionary *dict1 = [NSDictionary dictionaryWithObjects:@[value1,value2,value3] forKeys:@[key1,key2,key3]];
//value和key的顺序必须一一对应

//7>!!!!!!!!!!没搞清楚!!!!
+ (instancetype)dictionaryWithObjects:(const ObjectType  _Nonnull [])objects forKeys:(const id<NSCopying>  _Nonnull [])keys count:(NSUInteger)cnt;

//8>创建一个有多个value和key的dictionary
+ (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject, ...;
//demo
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:value1,key1,value2,key2,value3,key3, nil];

2、初始化dictionary实例

//1>实例化一个空dictionary
- (instancetype)init;
//demo
NSDictionary *dict = [[NSDictionary alloc] init];

//2>实例化一个dictionary获取本地路径下文件中的数组
- (NSDictionary<KeyType,ObjectType> *)initWithContentsOfFile:(NSString *)path;
//demo
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];

//3>实例化一个dictionary接收接口返回的字典
- (NSDictionary<KeyType,ObjectType> *)initWithContentsOfURL:(NSURL *)url;
//demo
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfURL:url];

//4>实例化一个dictionary,并将里一个数组中的元素复制
- (instancetype)initWithDictionary:(NSDictionary<KeyType,ObjectType> *)otherDictionary;
//demo
NSDictionary *dict = [[NSDictionary alloc] initWithDictionary:dict1];

//!!!!!!!!!!没搞懂
//5>实例化一个dictionary,并将里一个数组中的元素复制(copyItems)
- (instancetype)initWithDictionary:(NSDictionary<KeyType,ObjectType> *)otherDictionary copyItems:(BOOL)flag;

//6>实例化一个有多个value和key的dictionary
- (instancetype)initWithObjects:(NSArray<ObjectType> *)objects forKeys:(NSArray<id<NSCopying>> *)keys;
//demo
NSDictionary *dict = [[NSDictionary alloc]initWithObjects:@[value1,value2,value3] forKeys:@[key1,key2,key3]];

//7>!!!!!没搞懂
- (instancetype)initWithObjects:(ObjectType  _Nonnull const [])objects forKeys:(id<NSCopying>  _Nonnull const [])keys count:(NSUInteger)cnt;


//8>实例化一个有多个value和key的dictionary
- (instancetype)initWithObjectsAndKeys:(id)firstObject, ...;
//demo
NSDictionary *dict = [[NSDictionary alloc]initWithObjectsAndKeys:value1,key1,value2,key2,value3,key3, nil];

3、Creates a shared key set object for the specified keys.!!!!!没搞懂

+ (id)sharedKeySetForKeys:(NSArray<id<NSCopying>> *)keys;

4、字典中条目的个数

@property(readonly, copy) NSArray<KeyType> *allKeys;
//demo
NSUInteger num =  dict. count;

5、字典比较

- (BOOL)isEqualToDictionary:(NSDictionary<KeyType,ObjectType> *)otherDictionary;
//demo
BOOL isEqule = [dict1 isEqualToDictionary:dict];

6、key和value的相关方法

//1>获取字典中所有的key值 
@property(readonly, copy) NSArray<KeyType> *allKeys;
//demo
NSArray *keyArr = dict.allKeys;

//2>获取所有值等于value的key的值
- (NSArray<KeyType> *)allKeysForObject:(ObjectType)anObject;
//demo
NSDictionary *dict = @{@"key1":value1,@"key2":value2,@"key3":value1};
NSArray *keyArr = [dict allKeysForObject:value1];
//返回
//(
//    key1,
//    key3
//)

//3>获取字典中所有的value值
@property(readonly, copy) NSArray<ObjectType> *allValues;
//demo
NSArray *valueArr = dict.allValues;

//4>Returns by reference C arrays of the keys and values in the dictionary.不懂!!!!!!!!
- (void)getObjects:(ObjectType  _Nonnull [])objects andKeys:(KeyType  _Nonnull [])keys;


//5>获取指定key的value
- (ObjectType)objectForKey:(KeyType)aKey;
//demo
NSString *str = [dict objectForKey:key];

//6>获取指定key的value(不知道和上一个方法的具体区别是啥,暂时知道都能获取value)
- (ObjectType)objectForKeyedSubscript:(KeyType)key;
//demo
NSString *str = [dict objectForKeyedSubscript:key];

//7>获取指定key的value,如果没找到,返回marker
- (NSArray<ObjectType> *)objectsForKeys:(NSArray<KeyType> *)keys notFoundMarker:(ObjectType)marker;
//demo
NSArray *arr = [dict objectsForKeys:@[key] notFoundMarker:maker];
//如果找到对应的key值,则返回对应的value数组,若没找到,返回只有marker的数组

//8>获取指定key的value值(key的类型必须是NSString)
- (ObjectType)valueForKey:(NSString *)key;
//demo
NSString *str = [dict objectForKeyedSubscript:key];

7、枚举字典

//1>取出字典中的key值,组成枚举
- (NSEnumerator *)keyEnumerator
//demo
NSEnumerator *keyEnum = [dict1 keyEnumerator];

//2>取出字典中的object,组成枚举
- (NSEnumerator<ObjectType> *)objectEnumerator;
//demo
NSEnumerator *objectEnum = [dict1 objectEnumerator];

//3>遍历字典,block中处理字典中的数据
- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(KeyType key, ObjectType obj, BOOL *stop))block;
//demo
[dict enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
        NSLog(@"%@,%@,%d",key,obj,*stop);
}];


//4>遍历字典,block中处理字典中的数据(暂时不清楚NSEnumerationReverse和NSEnumerationConcurrent的区别)
- (void)enumerateKeysAndObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (^)(KeyType key, ObjectType obj, BOOL *stop))block;
//demo
[dict enumerateKeysAndObjectsWithOptions:NSEnumerationReverse usingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
        NSLog(@"%@,%@,%d",key,obj,*stop);
}];

8、分类字典(暂时不懂,遇见再研究)

//1>
- (NSArray<KeyType> *)keysSortedByValueUsingSelector:(SEL)comparator;

//2>
- (NSArray<KeyType> *)keysSortedByValueUsingComparator:(NSComparator)cmptr;

//3>
- (NSArray<KeyType> *)keysSortedByValueWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr;

9、字典过滤(暂时不懂,遇见再研究)

//1>
- (NSSet<KeyType> *)keysOfEntriesPassingTest:(BOOL (^)(KeyType key, ObjectType obj, BOOL *stop))predicate;

//2>
- (NSSet<KeyType> *)keysOfEntriesWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (^)(KeyType key, ObjectType obj, BOOL *stop))predicate;

10、保存字典进一个文件

//1>
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

//2>
- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;

11、访问文件属性

//1>
- (NSDate *)fileCreationDate;

//2>
- (BOOL)fileExtensionHidden;

//3>
- (NSNumber *)fileGroupOwnerAccountID;

//4>
- (NSString *)fileGroupOwnerAccountName;

//5>
- (OSType)fileHFSCreatorCode;

//6>
- (OSType)fileHFSTypeCode;

//7>
- (BOOL)fileIsAppendOnly;

//8>
- (BOOL)fileIsImmutable;

//9>
- (NSDate *)fileModificationDate;

//10>
- (NSNumber *)fileOwnerAccountID;

//11>
- (NSString *)fileOwnerAccountName;

//12>
- (NSUInteger)filePosixPermissions;

//13>
- (unsigned long long)fileSize;

//14>
- (NSUInteger)fileSystemFileNumber;

//15>
- (NSInteger)fileSystemNumber;

//16>
- (NSString *)fileType;

12、创建描述

//1>将dictionary转换为string
@property(readonly, copy) NSString *description;

//2>将dictionary转换为string(不太懂文档上写的,区别就在于上一个有{},这个没有)
@property(readonly, copy) NSString *descriptionInStringsFileFormat;

//3>
- (NSString *)descriptionWithLocale:(id)locale;

//4>
- (NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level;

13、初始化

- (instancetype)initWithCoder:(NSCoder *)aDecoder;

14、实例方法

//1>
- (NSEnumerator<KeyType> *)keyEnumerator;

//2>
- (void)getObjects:(ObjectType  _Nonnull [])objects andKeys:(KeyType  _Nonnull [])keys count:(NSUInteger)count;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,636评论 0 9
  • 一、源题QUESTION 1The instance abnormally terminates because ...
    猫猫_tomluo阅读 1,564评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,296评论 18 399
  • 千里烟波潋滟生,芦荻簌簌雁清鸣。苍山远影连空碧,一叶扁舟独钓萍。 云荡翼,雨飘零,此心归棹踏歌行。天涯目断情难断,...
    易词斋主人阅读 1,458评论 38 44