「NSOrderedSetArrayProxy物而被枚舉突變的」我有兩個功能:得到一個誤差無突變
一個返回填充在一個塊
- (NSArray *)getArray {
NSArray *someValues = @[@0, @42, @23, @5, @8, @2013];
NSArray *filter = @[@42, @23, @5];
//replacing this NSMutableOrderedSet with a NSMutableArray
//and return just matched then, resolves the problem.
//so the exception has to do something with that set.
NSMutableOrderedSet *matched = [[NSMutableOrderedSet alloc] init];
for (id value in someValues) {
[filter enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isEqual:value])
[matched addObject:value];
}];
}
return [matched array];
}
陣列和另外一個枚舉返回從第一個方法
- (void)enumArray:(NSArray *)array {
NSEnumerator *enumerator = [array objectEnumerator];
for (id obj in enumerator) {
if ([obj isEqual:@42])
[enumerator nextObject]; // <== this line causes the error!
}
}
陣列如果我現在做這樣的事情
NSArray *array = [foo getArray];
[foo enumArray:array];
我會得到一個NSGenericException有以下消息:
收藏< __NSOrderedSetArrayProxy:爲0x123456>而 被枚舉
其中到底是什麼突變突變。我不明白。從該陣列返回一個副本解決了這個問題,但我仍然沒有得到它。
錯誤已經做了一些與NSMutableOrderedSet,如果我更換一個數組我沒有得到一個異常。
一些截圖,拋出的異常
什麼是你想達到與循環或與該行? –
哪一個?這只是簡化代碼。 – peko
導致錯誤的那個。你爲什麼想要推進統計員? –