valueForKey:
возвращает автоматически выпущенный экземпляр.Если вы не сохраните его, вы можете ожидать, что он будет освобожден через некоторое время после возврата из текущего метода.Похоже, вы присваиваете его переменной экземпляра.Если вы сделаете это, вам нужно сохранить его.
manufactureSearchObjectString = [arrayValues valueForKey:@"MANUFACTURER"];
[manufactureSearchObjectString retain];
Но похоже, что у вас есть другая проблема.
[arrayValues valueForKey:@"MANUFACTURER"];
Это возвращает массив.
manufactureSearchObjectString = [arrayValues valueForKey:@"MANUFACTURER"];
По имени вашей переменной это выглядит так, как будто вы присваиваете ее строковой переменной.Так что, если вы исправите проблему сохранения, у вас будет другая ошибка.Вы получите нераспознанный селектор при попытке вызвать для него isEqualToString.
Вам необходимо присвоить строковое значение для factorySearchObjectString.Вам нужно выяснить, какое строковое значение вы хотите, чтобы это было.В этом случае у вас есть только одна строка в вашем массиве, поэтому я думаю, что вы хотите эту.В этом случае
manufactureSearchObjectString = [[arrayValues valueForKey:@"MANUFACTURER"] objectAtIndex:0];
[manufactureSearchObjectString retain];
Но в целом вам нужно проверить, есть ли в массиве более одного значения, и решить, какое из них вы хотите, а также проверить, нет ли значений в массиве, исделать что-то правильное, чтобы справиться с этим.