回答
您可以使用NSArray
enumerateObjectsUsingBlock:
功能。
[myArray enumerateObjectsUsingBlock:^(id x, NSUInteger index, BOOL *stop) {
// Body of the function
}];
dasblinkenlight是的,先生,我們有一個贏家。這會很好地工作。謝謝你。乾杯。 – dugla 2012-04-06 16:56:09
爲什麼這是一個贏家。一個映射函數應該返回一個新的數組,其中原始數據的每個元素都已經被該塊執行。 enumerateObjectsUsingBlock返回void。 – 2014-05-05 16:13:05
@SaniElfishawy OP所謂的「地圖」與更常見的定義不同:他想要一個「foreach」機制來應用自己的功能(經典「地圖」的第一部分),但他不想收集變換(「地圖」功能的第二部分)。我根據OP對所需功能的描述回答了這個問題,即「這是應用於陣列的每個元素的函數」。 – dasblinkenlight 2014-05-05 16:31:43
您正在尋找應用的地圖應該返回一個新的數組與轉化值。
但是,您可以用創建自定義類別的方法來增加NSArray。這裏有兩個例子 - 應用與地圖:
@implementation NSArray (CMMap)
- (NSArray *) map:(id(^)(id obj))block {
NSMutableArray *a = @[].mutableCopy;
for (id o in self) {
id on = block(o);
if (!on) {
NSLog(@"NSArray::map() - object returned by block is nil!");
abort();
}
[a addObject: on];
}
return [NSArray arrayWithArray: a];
}
- (void) apply:(void(^)(id obj))block {
for (id o in self) {
block(o);
}
}
@end
如果您正在使用的Objective-C,你可以簡單地使用這些方法:
- (void)makeObjectsPerformSelector:(SEL)aSelector;
- (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(nullable id)argument;
例如:
[array makeObjectsPerformSelector:@selector(doSomething)];
- 1. 實現地圖功能
- 2. 我如何實現Facebook的功能?
- 3. 如何實現記住我的功能?
- 4. 我如何在ios中實現本地化功能?
- 5. 如何實現懶惰的「縮小地圖」功能?
- 6. 如何在地圖上實現度量功能
- 7. 我如何能實現功能,就如同「預緩存地圖區域」像谷歌地圖
- 8. 如何實現MenuStrip功能?
- 9. 如何實現Wait()功能
- 10. 如何實現diff功能?
- 11. 如何實現該功能?
- 12. 使我的Clojure地圖功能實現更快
- 13. 如何在我的應用程序中實現本地圖庫功能
- 14. 我們如何在Cordova和jQuery mobile中實現離線傳單地圖功能
- 15. 實現「記住我」功能
- 16. NSArray的實現
- 17. 如何實現智能裁剪功能
- 18. 我如何能的NSArray
- 19. 試圖實現在Go地圖合併功能,但沒有
- 20. 實現谷歌地圖般的圖像拖動功能?
- 21. 我如何在Rails 3中實現aasm以實現我想要的功能?
- 22. 我在哪裏實現我的功能?
- 23. 如何實現標籤功能,如tumblr
- 24. 我如何能實現data.table
- 25. 我如何能實現的功能,一個事件偵聽
- 26. 如何在IBAction中實現NSArray方法?
- 27. NSArray如何實現NSCopying協議
- 28. 如何有效地實現數據庫功能?
- 29. 如何最好地在AngularJS/Rails中實現功能標記?
- 30. 如何最好地實現'網站關閉'功能?
地圖是一個從一件事轉變爲另一件事......你在尋找「foreach」,而不是地圖......說,接受的答案是正確的。 – 2013-06-10 16:35:26