Вот ваша проблема:
float xToMul = [[xTemp objectAtIndex:j] floatValue]; float hToMul = [[hTemp objectAtIndex:(j+i)] floatValue];
NSLog(@"xToMul = %@", xToMul); NSLog(@"hToMul = %@", hToMul);
% @ для объектов, которые поддерживают-описание.float не является объектом вообще.Этот код отправляет float сообщение -описание, на которое он не может ответить.
Есть два способа решить эту проблему.
Первый - сделать объекты xToMul и hToMul вместо float иоставьте строку формата.
id xToMul = [xTemp objectAtIndex:j];
id hToMul = [hTemp objectAtIndex:(j+i)];
NSLog(@"xToMul = %@", xToMul);
NSLog(@"hToMul = %@", hToMul);
Во-вторых, сохраните их как числа с плавающей точкой, но исправьте строку формата:
float xToMul = [[xTemp objectAtIndex:j] floatValue];
float hToMul = [[hTemp objectAtIndex:(j+i)] floatValue];
NSLog(@"xToMul = %f", xToMul);
NSLog(@"hToMul = %f", hToMul);
Если вы планируете выполнять математические операции с числами, вывозможно, вы захотите выбрать эту опцию.
Еще один интересный момент - это цикл:
for (int j = 0; j < 3; ++j) {
. Он будет проходить через j с тремя значениями: 0, 1 и 2. Это соответствует первому,второй и третий элемент в NSArray.У вас есть два предмета в x
и три в h
.Я предполагаю, что это просто упрощение вашего исходного кода, но в обоих случаях это один короткий.j из 2 + 1 будет иметь доступ к 4-му элементу в h
, а j из 2 - к 3-му элементу в x
.