Как указано в комментариях, но самое главное в вашем сообщении об ошибке говорится, что ваши объекты anObject
и nextObject
не NSNumber
- они NSMutableArray
х, отсюда
-[__NSArrayM floatValue]: unrecognized selector...
часть вашей ошибки.
Убедитесь, что объекты в AnArrayInsideMainDict
действительно
NSNumber
перед попыткой разыграть их как числа,
Я бы предложил пометить ваши объекты, прежде чем "предполагать" их типы, но я сомневаюсь, что это поможет вам получить желаемый результат (поскольку это, скорее всего, в данном случае пропустит каждый объект, который не an NSNumber
).
Прежде чем вы даже введете цикл for в [MainDict allKeys]
, backtrace , чтобы убедиться, что вы фактически передаете массивы NSNumber
в качестве объектов словарей.
ЕСЛИ вы на самом деле не уверены в типах объектов, вы можете просто бросить флаг, чтобы убедиться, что вы не неправильно интерпретируете ни один из объектов:
...
for (NSUInteger n=0; n<4; n++) {
NSNumber *anObject = [AnArrayInsideMainDict objectAtIndex:n];
NSNumber *nextObject = [nextDict objectForKey:[NSNumber numberWithDouble:i]];
if ([anObject isKindOfClass:NSNumber.class] && [nextObject isKindOfClass:NSNumber.class]) {
// Good to continue now that you know the objects
} else NSLog(@"whoops.. anObject: %@ nextObject: %@", anObject.class, nextObject.class);
...
LASTLY , если вы настолько смелы и уверены, что где-то в этом словаре находятся ваши NSNumber
, вы можете пометить свои шаги, чтобы проверить наличие экземпляров NSNumber.class
, чтобы искать свои поплавки.
В противном случае, я предлагаю глубоко погрузиться в how и , где откуда вы получаете MainDict
.
Счастливого кодирования - ура!