快還要更快!使用 NSDictionary 迭代取值法來印出 NSDictionary 全部的資料

XCode

 

NSDictionary 是 Objective-C 中一個相當好用的東西,很類似 Java 中的 Map 物件,都是以 key-Value 的方式儲存資料。Objective-c 在處理 JSON 資料時,也會將資料轉成 NSDictionary 的方式儲存。而在海芋最近使用 NSDictionary 的物件,必須將 NSDictionary 中的資料全部印出來,這時怎麼辦呢?

 

其實,在 Objective-C 中,就有一個函式 enumerateKeysAndObjectsUsingBlock,就可以一次繞完整個 NSDictionary 了,而這個函式在官方的定義如下:

- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(KeyType key, ObjectType obj, BOOL *stop))block;

看到這,或許你就會知道了,他是使用 Block 的方式做處理,而有三個參數,第一個參數 key 就是 NSDictionary 的 key,obj 就是 NSDictionary 的 Value,*stop 就是要不要停止的意思。

 

舉例來說,如果你一開始建了一個 NSMutableDictionary,如下:

NSMutableDictionary* m_mapRequestCache;
m_mapRequestCache = [[[NSMutableDictionary alloc] init] autorelease];
m_mapRequestCache["0"] = @(0);
m_mapRequestCache["1"] = @(1);
m_mapRequestCache["2"] = @(2);

Read More