在Objective-C中,如何使用foreach循环遍历NSMutableArray中的索引(键)和对象

问题描述:

是否有可能像使用“foreach”循环遍历PHP中的关联数组一样遍历NSMutableArray?我想在每个循环中获取“key”和“value”。我有一个NSMutableArray,我想用它作为关联数组,来遍历它并以同样的方式改变它,我会改变PHP中的关联数组。这是可能的,或者我必须使用一些更复杂的结构,如NSMutableDictionary - 为此目的?在Objective-C中,如何使用foreach循环遍历NSMutableArray中的索引(键)和对象

+1

你能举一个具体的例子吗?这听起来像你想滥用数组,但目前还不清楚。 – Avi

+0

我想使用类似于(NSNumber * obj in self.items){ } ,然后在每个循环遍中获取密钥和对象。 –

+2

数组中没有键。有一个索引。 – Avi

如果要使用NSMutableArray则可以使用以下代码来遍历数组,同时访问两个所述索引和所述对象:

NSMutableArray *someArray = ...; 
for (NSUInteger index = 0; index < someArray.count; index++) { 
    NSNumber *object = someArray[index]; // Assuming the array stores NSNumber*s 
    ... 
} 

另一种选择是使用由SDK提供的枚举块:

NSMutableArray *someArray = ...; 
[someArray enumerateObjectsUsingBlock:^(NSNumber* object, NSUInteger index, BOOL *stop) { 
    ... 
}]; 

请记住,数组有索引,而不是自定义键。索引必须从0开始,并且不能有任何间隔。如果你想要这种行为,那么使用NSMutableDictionary

+0

如果我想要哪种行为,对不起?无论如何,我认为你提供的第一个解决方案对我来说更好,因为它不那么复杂。谢谢您的帮助! –

+1

@VladimirDespotovic如果你想在你的“数组”中有自定义键,例如字符串或数字,如ID不是从0开始顺序递增。在PHP中,它没有什么区别,但是在Objective-C中,只能使用'NSArray',索引从0开始并且没有间隔。 –

+1

谢谢。请随时提出我的问题和我的意见,因为我不认为这是一个无用的问题(与其他人认为这是一个负面问题,并给我一个downvote,出于某种原因,我不知道...)。 –