1、使用dictionaryWithObjectsAndKeys方法存储数据时,中间任何一个对象都不能为nil,否则它后面都对象都无法存入aFiledic。因为dictionaryWithObjectsAndKeys方法是以nil结尾的。所以,只要见到nil,此方法就认为结束了。


NSDictionary *aFiledic = [NSDictionary dictionaryWithObjectsAndKeys:                               aFileModel.gid,               @"gid",                               aFileModel.nid,               @"nid",                               aFileModel.vid,               @"vid",                               aFileModel.videoName,         @"videoName",nil];


2、BOOL 类型数据不能直接存入Dicionary,要将BOOL类型数据转换为NSNumber之后再存。

[NSNumber numberWithBool:aFileModel.isDownloading]


3、NSDictionary的遍历

法一

据说是开发文档中的方法,未考证。

NSEnumerator *enumerator = [myDictionary keyEnumerator]; id key; while ((key = [enumerator nextObject])) {     /* code that uses the returned key */ }

法二

@未解提供,也是最方便用的最多的一种方法,一般用这种就可以。

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];  for (NSString *key in dict) {     NSLog(@"key: %@ value: %@", key, dict[key]); }

法三

~~需要根据​​i​​有特殊的操作时可以用这种~~

上面那一行删除了,好像是语法错了,没有删除线...

之前写这个文章的时候脑子里乱了,其实根据​​i​​有特殊操作的是NSArray,感谢@未解的提醒~

这个方法是最笨拙的一个,一般遍历NSDictionary也不会这么用,姑且记在这里,怎么也算是一种方法嘛~

- (void)describeDictionary:(NSDictionary *dict)  {   NSArray *keys;   int i, count;   id key, value;    keys = [dict allKeys];   count = [keys count];   for (i = 0; i < count; i++)   {     key = [keys objectAtIndex: i];     value = [dict objectForKey: key];     NSLog (@"Key: %@ for value: %@", key, value);   } }