NSDictionary 詳解


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); } }

 轉:http://segmentfault.com/blog/jokinryou/1190000000440081?page=1

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM